如何在牛郎星上水平排列两个面并排的图表?

2024-03-28 18:46:23 发布

您现在位置:Python中文网/ 问答频道 /正文

牛郎星提供了可爱的特征面图表使用面方法。例如,以下数据集可以很好地可视化:

print(df[['Year', 'Profile', 'Saison', 'Pos']].to_csv())
,Year,Profile,Saison,Pos
0,2017,6.0,Sommer,VL
1,2017,6.0,Winter,VL
13,2017,6.0,Winter,HL
12,2017,6.0,Sommer,HL
18,2017,6.0,Sommer,HR
6,2017,6.0,Sommer,VR
7,2017,6.0,Winter,VR
19,2017,6.0,Winter,HR
14,2018,5.5,Winter,HL
8,2018,5.5,Winter,VR
15,2018,5.5,Sommer,HL
20,2018,4.3,Winter,HR
21,2018,5.0,Sommer,HR
3,2018,5.5,Sommer,VL
2,2018,6.2,Winter,VL
9,2018,4.5,Sommer,VR
17,2019,4.5,Sommer,HL
11,2019,4.2,Sommer,VR
22,2019,3.5,Winter,HR
10,2019,5.28,Winter,VR
5,2019,4.6,Sommer,VL
4,2019,4.9,Winter,VL
16,2019,4.0,Winter,HL
23,2019,4.5,Sommer,HR

使用以下命令:

alt.Chart(df).mark_bar().encode(x='Year:O', y='Profile:Q').facet(row='Saison:N', column='Pos:N')

enter image description here

但是,如你所见,我在水平方向上还有很多地方,我想用它来重新排列冬季绘图,就在夏季绘图旁边:

enter image description here

我知道我已经使用了柱网来刻面属性Pos,但是对于我来说,WinterSommer绘图是两个独立的绘图(就像here),我想并排放置。 我尝试在同一个单元格中创建两个不同的图表,并使用html将它们并排显示,但在Jupyter环境中,每个单元格只有一个牵牛星/织女星图是有限制的。你知道吗

我能用什么方法水平排列这些图表吗?你知道吗


Tags: 方法pos绘图df图表水平hrprofile
1条回答
网友
1楼 · 发布于 2024-03-28 18:46:23

在牛郎星上,没有好的方法可以做到这一点,因为刻面图表不能根据Vega-Lite模式嵌套。然而,在某些情况下,Vega-Lite渲染器确实可以处理这个问题,尽管在技术上模式不允许这样做。你知道吗

所以你可以这样做:

chart = alt.Chart(df).mark_bar().encode(
    x='Year:O',
    y='Profile:Q'
).facet('Saison:N')

spec = alt.FacetChart(
    data=df,
    spec=chart,
    facet=alt.Facet('Pos:N')
).to_json(validate=False)

print(spec)

生成的规范可以手工粘贴到http://vega.github.io/editor中,以显示以下内容(vega editor link):

enter image description here

您甚至会注意到,vega编辑器将部分规范标记为无效。诚然,这并不是最令人满意的答案,但在某种程度上是可行的。你知道吗

希望将来Vega-Lite模式能够为嵌套的facet添加实际的支持,这样就可以更直接地从Altair使用它们。你知道吗

相关问题 更多 >