繁体   English   中英

如何在 Altair 中创建分组条形图?

[英]How to create a grouped bar chart in Altair?

如何在 Altair 中创建分组条形图? 我正在尝试以下操作,但它只是并排生成两个图表。

Chart(data).mark_bar().encode(
   column='Gender',
   x='Genre',
   y='Rating',
   color='Gender'
)

这是图像产生

组条形图示例

我展示了 Altair 文档中分组条形图的简化示例。 您还可以在此处查看完整文档。

基本上,您必须指定 x 轴Gender (每个子图中的 F 或 M),y 轴作为RatingGenre作为Column

from altair import *
import pandas as pd

# create dataframe
df = pd.DataFrame([['Action', 5, 'F'], 
                   ['Crime', 10, 'F'], 
                   ['Action', 3, 'M'], 
                   ['Crime', 9, 'M']], 
                  columns=['Genre', 'Rating', 'Gender'])

chart = Chart(df).mark_bar().encode(
   column=Column('Genre'),
   x=X('Gender'),
   y=Y('Rating'),
   color=Color('Gender', scale=Scale(range=['#EA98D2', '#659CCA']))
).configure_facet_cell(
    strokeWidth=0.0,
)

chart.display() # will show the plot

条形图将如下所示

图片

添加轴参数

您只需遵循文档中的Axis参数即可使绘图看起来更漂亮:

chart = Chart(df).mark_bar().encode(
   column=Column('Genre', 
                 axis=Axis(axisWidth=1.0, offset=-8.0, orient='bottom'),
                 scale=Scale(padding=4.0)),
   x=X('Gender', axis=False),
   y=Y('Rating', axis=Axis(grid=False)),
   color=Color('Gender', scale=Scale(range=['#EA98D2', '#659CCA']))
).configure_facet_cell(
    strokeWidth=0.0,
)

chart.display()

伊格

如果您在较新版本的 Altair(自 4.2.0 起)上尝试接受的答案。 你会注意到它不起作用。 API 中的一些已更改,因此要在 Altair 4.2.0 中获得相同的结果,您可以使用我对Grouped bar chart in newer versions of altair (>= 4.2.0) 的回答中发布的方法。 对于 Altair 的开发版本(可能会发布为 5.0),这变得更容易实现,因为您可以像这样使用xOffset编码而无需对图表进行分面:

import altair as alt
import pandas as pd

df = pd.DataFrame([['Action', 5, 'F'], 
                   ['Crime', 10, 'F'], 
                   ['Action', 3, 'M'], 
                   ['Crime', 9, 'M']], 
                  columns=['Genre', 'Rating', 'Gender'])

chart = alt.Chart(df).mark_bar().encode(
   x=alt.X('Genre', axis=alt.Axis(labelAngle=0)),
   xOffset='Gender',
   y=alt.Y('Rating', axis=alt.Axis(grid=False)),
   color='Gender'
).configure_view(
    stroke=None,
)

chart

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM