首页 > 解决方案 > 使用“hconcat”时,有没有办法对齐图表标题?

问题描述

当使用 并排显示两个条形图(一个水平,一个垂直)时alt.hconcat,即使图表的高度相等,标题也会错位。有没有办法对齐标题?

# Makes test dataframe
test = pd.DataFrame({"group":["a","b","c"],"value1":[4,5,6], "value2":[10,12,14]}).reset_index()

# Sets up vertical bar chart
chart1 = alt.Chart(test).mark_bar().encode(
    x = alt.X('group:N'),
    y = alt.Y('value1:Q')
).properties(height = 300, width = 300, title = "Testing Title 1")

# Sets up horizontal bar chart
chart2 = alt.Chart(test).mark_bar().encode(
    x = alt.X('value2:Q'),
    y = alt.Y('group:N')
).properties(height = 300, width = 300, title = "Testing Title 2")

# Shows bar charts side by side
alt.hconcat(chart1, chart2)

图表标题未对齐。(无法发布图片,因为我显然需要 10 个声望点才能这样做)

标签: pythonaltair

解决方案


似乎这种行为是由于从最左侧图表中的 y 轴自动避开顶部刻度及其标签“6”。Altair/Vega lite 可能会自动将标题偏移量调整为图表中的最高元素,并且由于刻度线及其标签位于轴线上方,因此与最顶部刻度线及其标签“a”的最右侧轴相比,标题将垂直偏移" 远低于轴线的末端。

通过隐藏刻度标签,您可以看到这确实是问题所在。

您问题的当前外观(添加红线以进行比较): 在此处输入图像描述

删除刻度标签后: 在此处输入图像描述

不完全对齐,隐藏刻度也可以完美对齐它们。

删除刻度线及其标签后: 在此处输入图像描述

要解决此问题,您可以手动将两个标题的偏移量设置为相同。不幸的是,.configure_title(offset=0)在布局上同时设置两个标题不起作用,因为它会为已经用于自动闪避的值添加偏移量。

相反,我相信你必须alt.TitleParams(offset=0)为最左边的情节设置偏移量,或者在最右边的情节中设置一个值,使其达到与最左边的情节相同的高度。在这种情况下,“9”似乎是一个神奇的数字

对于title = alt.TitleParams("Testing Title 2", offset=9)最右边的情节: 在此处输入图像描述

这可能是 Vegalite 而不是 Altair 的问题/功能,因此在问题跟踪器上挖掘或发布新问题,要求它们默认对齐可能会有所帮助。


推荐阅读