我试图将瓦埃克斯与牛郎一起使用,但我在将Vaex数据文件传递给牛市时遇到了一些困难。
当尝试制作一个简单的线状图时
alt.Chart(df)\
.mark_line()\
.encode(alt.X('x'), alt.Y('y1'))我说错了
编码字段是在没有类型的情况下指定的;不能自动推断类型,因为数据没有指定为pandas.DataFrame。
但是如果我试图指定它们
alt.Chart(df)\
.mark_line()\
.encode(alt.X('x:T'), alt.Y('y1:Q'))我说错了
Altair.vegalite.v4.api.图->0,验证'additionalProperties‘ 不允许使用其他属性(“y1”、“x”、“y2”是意外的)
在我看来,把Vaex数据和牛郎星联系起来有问题,但我不知道如何绕过它.
在这里,完整的代码:
import altair as alt
import numpy as np
import vaex
import datetime
base = datetime.datetime.today()
dates = [base - datetime.timedelta(days=x) for x in range(10)]
y1 = np.sin(range(10))
y2 = np.cos(range(10))
df = vaex.from_arrays(x=dates, y1=y1, y2=y2)
alt.Chart(df)\
.mark_line()\
.encode(alt.X('x:T'), alt.Y('y1:Q')) #.encode(alt.X('x'), alt.Y('y1'))发布于 2020-10-12 15:17:05
牛市与Vaex不兼容。进行操作的最简单方法是将Vaex数据在牛市图表中使用时转换为熊猫;例如:
alt.Chart(df.to_pandas_df())使用这种转换没有什么坏处:熊猫是牛郎星的一个很难的要求,而牛郎星总是将数据串行化到JSON,以便将其传递给Vega。对于Altair所能处理的数据集的大小,Vaex提供的数据表示和序列化的效率并不特别重要。
如果您希望这种情况自动发生,您可以注册一个新的数据转换器,该转换器将支持vaex。这应该能起作用:
import altair as alt
def vaex_data_transformer(df):
try:
df = df.to_pandas_df()
except AttributeError:
pass
return alt.data.default_data_transformer(df)
alt.data_transformers.register('vaex', vaex_data_transformer)
alt.data_transformers.enable('vaex')有了这个功能,alt.Chart()将在熊猫数据被接受的任何地方接受一个金库数据。
https://stackoverflow.com/questions/64313453
复制相似问题