Altair - 添加颜色时条形图域裁剪错误
Altair - Bar Chart Domain Cropping Error when adding Color
我有一个显示多种语言的百分比值的条形图。
chart = alt.Chart(df_lang_perc).mark_bar().encode(
x=alt.X('Lang:N', sort='-y', title='Language'),
y=alt.Y('perc_pos:Q', title='Percentage of Positive Reviews', scale=alt.Scale(domain=[0.7,1]), axis=alt.Axis(format='%')),
)
chart.display()
在DataFrame中,每种语言都被归类到一个市场中。当我尝试按语言添加颜色时,Altair 在将条形裁剪到正确长度时出现错误。
chart = alt.Chart(df_lang_perc).mark_bar().encode(
x=alt.X('Lang:N', sort='-y', title='Language'),
y=alt.Y('perc_pos:Q', title='Percentage of Positive Reviews', scale=alt.Scale(domain=[0.7,1]), axis=alt.Axis(format='%')),
color=alt.Color('market')
)
chart.display()
这是已知问题吗?有解决方法吗?
最小可重现示例:
df_lang_perc = pd.DataFrame({
'Lang': ['brazilian', 'czech', 'english', 'latam', 'thai'],
'perc_pos': [0.936053, 0.906603, 0.881611, 0.918832, 0.904748],
'market': ['Latin_America', 'Europe', 'Emglish', 'Latin_America', 'Asia']
})
我不确定为什么在按颜色分组时会发生这种情况,但这与轴外的剪贴图元素有关,您可以使用 mark_bar(clip=True)
作为图表的解决方法来强制执行此操作。
编辑:我实际上认为错误在于蓝条被自动切割(不确定这是 Altair 的问题,还是 JupyterLab 等前端的问题)。我相信在 VegaLite 中条形总是扩展到零,除非明确地剪裁以阻止放大小差异,除非它是仔细和有意地完成的。这也是图表在 VegaLite 在线编辑器中的行为方式,其中彩色条和非彩色条都需要明确的 clip=True
以避免延伸到 x 轴下方。
将 clamp=True
添加到 Y 的比例参数(或添加到单独的 configure_scale
)也解决了这个问题。
文档指出 True 是默认设置,但也将 clamp=False
设置为 'non-colored' 条形图,也不会扩展条形。
alt.Scale Documentation
我有一个显示多种语言的百分比值的条形图。
chart = alt.Chart(df_lang_perc).mark_bar().encode(
x=alt.X('Lang:N', sort='-y', title='Language'),
y=alt.Y('perc_pos:Q', title='Percentage of Positive Reviews', scale=alt.Scale(domain=[0.7,1]), axis=alt.Axis(format='%')),
)
chart.display()
在DataFrame中,每种语言都被归类到一个市场中。当我尝试按语言添加颜色时,Altair 在将条形裁剪到正确长度时出现错误。
chart = alt.Chart(df_lang_perc).mark_bar().encode(
x=alt.X('Lang:N', sort='-y', title='Language'),
y=alt.Y('perc_pos:Q', title='Percentage of Positive Reviews', scale=alt.Scale(domain=[0.7,1]), axis=alt.Axis(format='%')),
color=alt.Color('market')
)
chart.display()
这是已知问题吗?有解决方法吗?
最小可重现示例:
df_lang_perc = pd.DataFrame({
'Lang': ['brazilian', 'czech', 'english', 'latam', 'thai'],
'perc_pos': [0.936053, 0.906603, 0.881611, 0.918832, 0.904748],
'market': ['Latin_America', 'Europe', 'Emglish', 'Latin_America', 'Asia']
})
我不确定为什么在按颜色分组时会发生这种情况,但这与轴外的剪贴图元素有关,您可以使用 mark_bar(clip=True)
作为图表的解决方法来强制执行此操作。
编辑:我实际上认为错误在于蓝条被自动切割(不确定这是 Altair 的问题,还是 JupyterLab 等前端的问题)。我相信在 VegaLite 中条形总是扩展到零,除非明确地剪裁以阻止放大小差异,除非它是仔细和有意地完成的。这也是图表在 VegaLite 在线编辑器中的行为方式,其中彩色条和非彩色条都需要明确的 clip=True
以避免延伸到 x 轴下方。
将 clamp=True
添加到 Y 的比例参数(或添加到单独的 configure_scale
)也解决了这个问题。
文档指出 True 是默认设置,但也将 clamp=False
设置为 'non-colored' 条形图,也不会扩展条形。
alt.Scale Documentation