使用 `hconcat` 时有没有办法对齐图表标题?

Is there a way to align chart titles when `hconcat` is used?

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

# 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)

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

看来此行为是由于最左侧图表中 y-axis 的顶部勾号及其标签“6”自动躲避所致。 Altair/Vega lite 可能会将标题偏移量自动调整到图表中最高的元素,并且由于刻度线及其标签位于轴线上方,因此与最顶端的刻度线及其标签所在的最右边的轴相比,标题将垂直偏移"a" 远低于轴线的末端。

你可以通过隐藏勾号标签看到确实是这个问题。

您问题的当前外观(添加红线用于比较):

删除刻度标签后:

不太对齐,隐藏勾号也能完美对齐它们。

删除刻度及其标签后:

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

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

最右边的情节是title = alt.TitleParams("Testing Title 2", offset=9)

这可能是 issue/feature Vegalite 而不是 Altair,因此深入研究问题跟踪器或发布新问题要求它们默认对齐可能会有所帮助。