Altair Hconcat - Можно ли настроить разные оси для графиков в одном HConCat?
Я использую streamlit
для создания панели инструментов, и я хотел бы представить 2 диаграммы одна рядом с другой, используя altair
работает хорошо, hconcat
функция позволяет мне это делать.
import altair as alt
df1 = pd.DataFrame({'metric':list('ab'),
'value':[8,10]})
df2 = pd.DataFrame({'metric':list('xyz'),
'value':[5,9,7]})
chart_1 = (alt.Chart(df1).mark_bar().encode(x='metric', y='value'))
chart_2 = (alt.Chart(df2).mark_bar().encode(x='metric', y='value'))
(chart_1 | chart_2)
Я хотел бы, чтобы ось Y на одной диаграмме была слева, а ось Y для другой диаграммы - справа, но я не нашел решения. Конфигурация может происходить на уровне диаграммы:
chart_2 = (alt.Chart(df2).mark_bar().encode(x='metric', y='value')).configure_axisY(orient='right')
но тогда возникает исключение при представлении с использованием hconcat
func:
ValueError: Objects with "config" attribute cannot be used within HConcatChart. Consider defining the config attribute in the HConcatChart object instead.
Есть какой-либо способ сделать это?
заранее спасибо
1 ответ
В config
Свойство можно определить только на верхнем уровне диаграммы, так как оно, по сути, действует как тема, которая применяется ко всем компонентам окончательной диаграммы.
Если вы хотите установить разные свойства оси для каждой поддиаграммы, глобальная конфигурация не подходит для этого; вы можете сделать это в свойствах оси каждой поддиаграммы. Например:
chart_1 = alt.Chart(df1).mark_bar().encode(
x='metric',
y=alt.Y('value', axis=alt.Axis(orient='left'))
)
chart_2 = alt.Chart(df2).mark_bar().encode(
x='metric',
y=alt.Y('value', axis=alt.Axis(orient='right'))
)
(chart_1 | chart_2)