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
相关产品推荐
相关产品推荐

