Есть ли способ выровнять названия диаграмм, когда используется `hconcat`? - PullRequest
5 голосов
/ 10 ноября 2019

Когда две линейчатые диаграммы (одна горизонтальная, одна вертикальная) отображаются рядом друг с другом с помощью 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 очков репутации)

1 Ответ

2 голосов
/ 10 ноября 2019

Похоже, что это происходит из-за автоматического уклонения верхнего тика и его метки «6» от оси Y на крайнем левом графике. Altair / Vega lite, вероятно, автоматически корректирует смещение заголовка к самому высокому элементу на диаграмме, и, поскольку отметка и ее метка находятся над линией оси, заголовок будет смещен по вертикали по сравнению с крайней правой осью, где находится самый верхний отметка и его метка «a"значительно ниже конца линии оси.

Вы можете увидеть, что это действительно проблема, скрыв метку галочки.

Текущий вид из вашего вопроса (добавлена ​​красная линия)для сравнения): enter image description here

После удаления меток: enter image description here

Не совсемвыровнен, скрывая галочку, а также выровняет их идеально.

После удаления галочки и ее метки: enter image description here

Чтобы обойти это,Можно вручную установить смещение двух заголовков, чтобы они были одинаковыми. К сожалению, использование .configure_title(offset=0) на макете для одновременной установки обоих заголовков не работает, поскольку добавляет смещение к значениям, уже использованным для автоматического уклонения.

Вместо этого я считаю, что вам нужно установитьсмещение alt.TitleParams(offset=0) для крайнего левого графика или значение в крайнем правом графике, которое приводит к той же высоте, что и крайний левый график. В этом случае «9» кажется магическим числом

с title = alt.TitleParams("Testing Title 2", offset=9) для самого правого графика: enter image description here

Этовероятно, это проблема / особенность Vegalite, а не Altair, поэтому может помочь поиск трекера или публикация новой проблемы с просьбой выровнять их по умолчанию.

...