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

Kri*_*ris 6 python data-visualization altair

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

Chart(data).mark_bar().encode(
   column='Gender',
   x='Genre',
   y='Rating',
   color='Gender'
)
Run Code Online (Sandbox Code Playgroud)

这是图像产生

tit*_*ata 8

组条形图示例

我从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
Run Code Online (Sandbox Code Playgroud)

条形图如下所示

图片

添加轴参数

您只需要遵循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()
Run Code Online (Sandbox Code Playgroud)

伊姆古尔

  • `configure_facet_cell` 已被删除。现在要删除刻面轮廓,只需将其替换为“configure_view”即可。 (4认同)