You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shapelets平台使用Altair示例报错:Widget不支持spec参数

解决Shapelets中Altair图表的TypeError: Widget.init() got unexpected keyword argument 'spec'

问题重现

在Shapelets平台运行Altair图表示例时,执行代码触发以下错误:

TypeError: Widget.__init__() got an unexpected keyword argument 'spec'

涉事代码如下:

import altair as alt
import pandas as pd

app = DataApp(name="altair example")

# Define the data source
source = pd.DataFrame({'Horsepower': [130, 165, 150, 150, 140, 198],
                       'Miles_per_Gallon': [27.0, 28.0, 25.0, 25.0, 27.0, 17.0],
                       'Origin': ['USA', 'USA', 'USA', 'USA', 'USA', 'Europe'],
                       'Name': ['mazda rx4', 'mazda rx4 wag', 'datsun 710', 'hornet 4 drive', 'hornet sportabout', 'volvo 142e']})

# Define the Altair chart
spec = alt.Chart(source).mark_circle(size=60).encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
    tooltip=['Name', 'Origin', 'Horsepower', 'Miles_per_Gallon']
).interactive()

# Create the Altair chart component
altair_chart = app.altair_chart(title='Altair Chart 2', spec=spec)

# Add the chart to the app
app.place(altair_chart)

# Register the app
app.register()

问题原因

Shapelets的app.altair_chart()方法不支持spec参数,正确用来传入Altair Chart对象的参数是chart。

解决方案

将创建Altair图表组件的代码行中,spec=spec替换为chart=spec即可。

修改后的完整代码

import altair as alt
import pandas as pd

app = DataApp(name="altair example")

# Define the data source
source = pd.DataFrame({'Horsepower': [130, 165, 150, 150, 140, 198],
                       'Miles_per_Gallon': [27.0, 28.0, 25.0, 25.0, 27.0, 17.0],
                       'Origin': ['USA', 'USA', 'USA', 'USA', 'USA', 'Europe'],
                       'Name': ['mazda rx4', 'mazda rx4 wag', 'datsun 710', 'hornet 4 drive', 'hornet sportabout', 'volvo 142e']})

# Define the Altair chart
spec = alt.Chart(source).mark_circle(size=60).encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
    tooltip=['Name', 'Origin', 'Horsepower', 'Miles_per_Gallon']
).interactive()

# 修正参数名:将spec改为chart
altair_chart = app.altair_chart(title='Altair Chart 2', chart=spec)

# Add the chart to the app
app.place(altair_chart)

# Register the app
app.register()

内容的提问来源于stack exchange,提问作者Amelia Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 11:23:12