小能豆

调整 Altair 分组条形图的标签

py

我有一个名为的数据框table

TERM                        Bitcoin       S&P500    Real Estate Gold
0   High-Inflation/ Short term  3097.94       -3700.78  761.23      6512.71
1   High-Inflation/ Mid term    —             -3080.01  -8434.66    3242.40
2   High-Inflation/ Long term   —             -2089.25  -9117.96    8174.43
3   Low-Inflation/ Short term   780200.00     -273.71   1824.72     2214.51
4   Low-Inflation/ Mid term     21013600.00   5331.40   35810.58    -2879.37
5   Low-Inflation/ Long term    978017143.00. 15045.41  35895.81    861.90

并使用此代码生成了图表:

from itertools import product
alt.Chart(table).transform_fold(
    ["Bitcoin", "S&P500", "Real Estate", "Gold"], as_=["key", "value"]
).mark_bar().encode(
    x="key:N",
    y=alt.Y("value:Q", scale=alt.Scale(type='symlog'),
           axis=alt.Axis(values=[0] + [10**x * y for (x, y) in product(range(1, 10, 1), (1, -0.01))])),
    color="key:N",
    column="TERM",
)

但是,如您所见,顶部的标签挤在一起了。我不确定如何使它们更具视觉吸引力,以及如何删除key每个图表 x 轴上的标签:

1.png


阅读 5

收藏
2024-12-21

共1个答案

小能豆

您可以通过在 x 编码中设置来删除 x 标题title=None。您可以通过用行列表替换有问题的字符串来添加换行符。例如:

table['TERM'] = table['TERM'].str.split(' ', 1)
alt.Chart(table).transform_fold(
    ["Bitcoin", "S&P500", "Real Estate", "Gold"], as_=["key", "value"]
).mark_bar().encode(
    x=alt.X("key:N", title=None),
    y=alt.Y("value:Q", scale=alt.Scale(type='symlog'),
           axis=alt.Axis(values=[0] + [10**x * y for (x, y) in product(range(1, 10, 1), (1, -0.01))])),
    color="key:N",
    column="TERM"
)

2.png

2024-12-21