较新版本的 altair (>= 4.2.0) 中的分组条形图
Grouped bar chart in newer versions of altair (>= 4.2.0)
我正在尝试在 altair 中创建一个分组条形图,就像这个问题的答案一样 。
特别有趣的部分是“美化:
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()
但是,问题是列 (alt.Column
) 中 none 的内容在当前版本的 Altair 中有效(我使用的是 4.2)。
特别是,我得到:
SchemaValidationError: Invalid specification
altair.vegalite.v4.schema.channels.Column, validating
'additionalProperties' Additional properties are not allowed ('axis'
was unexpected)
还能做类似的事情吗?
在 Altair 4.2.0 中,您获得了类似的结果(不确定您是否可以使用 x-axis 行连接分面):
import altair as alt
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 = alt.Chart(df).mark_bar().encode(
column=alt.Column(
'Genre',
header=alt.Header(orient='bottom')
),
x=alt.X('Gender', axis=alt.Axis(ticks=False, labels=False, title='')),
y=alt.Y('Rating', axis=alt.Axis(grid=False)),
color='Gender'
).configure_view(
stroke=None,
)
chart
在当前的 Altair 开发版本中(可能会发布 5.0),您可以使用新的偏移通道来实现相同的结果而无需分面:
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
我正在尝试在 altair 中创建一个分组条形图,就像这个问题的答案一样
特别有趣的部分是“美化:
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()
但是,问题是列 (alt.Column
) 中 none 的内容在当前版本的 Altair 中有效(我使用的是 4.2)。
特别是,我得到:
SchemaValidationError: Invalid specification altair.vegalite.v4.schema.channels.Column, validating 'additionalProperties' Additional properties are not allowed ('axis' was unexpected)
还能做类似的事情吗?
在 Altair 4.2.0 中,您获得了类似的结果(不确定您是否可以使用 x-axis 行连接分面):
import altair as alt
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 = alt.Chart(df).mark_bar().encode(
column=alt.Column(
'Genre',
header=alt.Header(orient='bottom')
),
x=alt.X('Gender', axis=alt.Axis(ticks=False, labels=False, title='')),
y=alt.Y('Rating', axis=alt.Axis(grid=False)),
color='Gender'
).configure_view(
stroke=None,
)
chart
在当前的 Altair 开发版本中(可能会发布 5.0),您可以使用新的偏移通道来实现相同的结果而无需分面:
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