【问题标题】:Altair Area Chart Doesn't Display Properly (though It looks fine as a Bar Chart)Altair 面积图显示不正确(尽管它看起来像条形图一样好)
【发布时间】:2020-01-10 04:49:42
【问题描述】:

我无法确定为什么我的 area chart 的前半部分看起来如此不寻常,而同一数据集的 bar chart 看起来完全正常。

这里是csv格式的数据框数据:

Month,Poll_Num
SEP,29.7
AUG,28.8
JUL,29.9
JUN,30.3
MAY,35.9
APR,32.2
MAR,30.6
FEB,28.5
JAN,29.9
DEC,22.2
NOV,27.2

我使用以下代码将此数据绘制为条形图:

alt.Chart(dataframe).mark_bar().encode(
    x=alt.X('Month', sort=list(dataframe.Month)),
    y=alt.Y('Poll_Num'))

要从同一个数据框创建面积图,我所做的只是调用 mark_area() 方法而不是 mark_bar()

alt.Chart(dataframe).mark_area().encode(
    x=alt.X('Month', sort=list(dataframe.Month)),
    y=alt.Y('Poll_Num'))

关于我可能做错了什么,或者是什么导致了这个看起来不寻常的区域图的任何想法?

【问题讨论】:

  • 当我运行你的代码时,我得到一个正常的面积图。您能否描述一下您所看到的,以及它与您希望看到的有何不同?
  • 感谢您的回复,@jakevdp。我看到的输出是this link 中的图像。不幸的是,我不能直接在这里发布它,因为我没有足够高的积分排名。

标签: altair


【解决方案1】:

这是由于您使用旧版本的 vega-lite 渲染图表 - 该错误已在 vega-lite 3.4 中修复。使用 Vega-Lite 3.3 或更早版本呈现的图表的错误版本如下所示:

使用 Vega-Lite 3.4 或更高版本呈现的图表的正确版本如下所示:

要修复它,请确保您的前端渲染器是最新的。如何执行此操作取决于您使用的前端:

  • 对于 JupyterLab:更新到最新版本的 JupyterLab(捆绑了 vega-lite 渲染器)
  • 对于 Jupyter Notebook:将 vega 包更新到最新版本 (pip install -U vega)。
  • 对于 ColabKaggle 或 Altair 的内置 serve() 方法:确保您使用的是 Altair 3.2 或更高版本 (pip install -U altair)。李>

【讨论】:

  • 感谢您的帮助,@jakevdp。不幸的是,我更新了 JupyterLab,但问题仍然存在。但是,我注意到如果删除 alt.X 中的排序参数,图表会正常显示。我尝试通过以下方式排序:scale=alt.Scale(domain=['SEP', 'AUG', 'JUL', 'JUN', 'MAY', 'APR', 'MAR', 'FEB', 'JAN', 'DEC', 'NOV']) 这产生了相同的输出。在搜索了一下之后,似乎没有办法通过映射将月份名称分配为 x 轴标签(如果我要创建另一个带有数字格式的月份名称的列),对吗?这是我能想到的唯一解决方案
  • 啊,好像是最新版的 JupyterLab 渲染器still uses Vega-Lite 3.3,所以目前在 JupyterLab 中无法看到正确的图表,很遗憾。在 JupyterLab 更新之前,我建议使用其他前端,例如 Jupyter Notebook、Colab 或 Kaggle。
  • 好的,我明白了。它实际上在 Jupyter Notebook 中工作。再次感谢@jakevdp 的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-06
  • 1970-01-01
相关资源
最近更新 更多