带有 alpha-vantage pandas 数据的 Altair 图表

问题描述

我正在努力使用 altair 绘制我的 Pandas alpha vantage 数据,因为我无法按照我想要的方式获取数据。

这就是它来自我的 alpha-vantage 查询的方式:

alphavantagedata

这就是我现在的代码

context = locals()
source = data[0]['1a. open (USD)']
print(source[0])

context["chart"] = alt.Chart(source).mark_area(
    line={'color': 'black'},color=alt.Gradient(
        gradient='linear',stops=[alt.GradientStop(color='white',offset=0),alt.GradientStop(color='black',offset=1)],x1=1,x2=1,y1=1,y2=0
    )
).encode(
    alt.X('date:T'),alt.Y('price:Q')
).interactive()

运行代码时出现此错误

altair.utils.schemapi.SchemaValidationError: Invalid specification

    altair.vegalite.v4.api.Chart->0,validating 'additionalProperties'

    Additional properties are not allowed (Timestamp('2018-05-13 00:00:00'),Timestamp('2019-07-18 
    00:00:00'),Timestamp('2018-11-09 00:00:00'),Timestamp('2020-10-17 00:00:00'),Timestamp('2018- 
    07-05 00:00
    ----- lots more here -----
    Timestamp('2020-05-02 00:00:00'),Timestamp('2018-05-08 00:00:00'),Timestamp('2018-10-05 
    00:00:00') were unexpected)

所以问题是如何将我的 Pandas 数据作为两个数组,一个用于时间戳,另一个用于结束数据值!所以我可以这样做:

data = pd.DataFrame({'x': ['A','B','C','D','E'],'y': [5,3,6,7,2]})
alt.Chart(data).mark_bar().encode(
    x='x',y='y',)

谢谢!

解决方法

source 必须是 Pandas DataFrame;看来您正在传递一组时间戳。改为传递数据帧,您将不会看到此错误。

因为您没有提供有关如何生成 data 变量的完整示例,我无法提供更具体的建议。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...