#python #altair
Вопрос:
Мой код:
size = alt.datum.confirmed > 0
testplot1 = alt.Chart(df_ww_ru).transform_filter(
size
).mark_line(color='red').encode(
x=alt.X('date:T', type='temporal', title='Дата'),
y=alt.Y('sum(confirmed):Q', title='aboba'),
tooltip='sum(confirmed)'
)
testplot2 = alt.Chart(df_ru_ru).transform_filter(
size
).mark_line(color='blue').encode(
x=alt.X('date:T', type='temporal', title='Дата'),
y=alt.Y('sum(confirmed):Q', title='aboba'),
tooltip='sum(confirmed)'
)
testplot_rez = alt.layer(testplot1, testplot2).configure_view(
).properties(
width=820,
height=500
).configure_axis(
labelFontSize=17,
titleFontSize=20
)
В результате я получаю такой график с совершенно гигантским масштабом. Когда я показываю несомбинированное расписание, все в порядке.
Как это можно исправить? Мне также нужно добавить легенду, где нужно будет подписать эти две строки, как это сделать? Можно ли это сделать так же, как в matplotlib? То есть назовите все вручную.
Ответ №1:
Что касается добавления легенды, то, вероятно, проще всего было бы объединить два кадра данных так, чтобы получился один кадр данных со столбцами date
, confirmed
, и category
. Значения category
будут либо wu_ru
или ru_ru
. Таким образом, вы можете задать кодировку color='category'
при создании графика altair и создать легенду автоматически, как в этом примере. Вероятно, вы можете использовать pandas merge или concat для объединения dfs, а затем pandas расплавить, чтобы получить его в правильном формате. Более подробную информацию о форматах данных в Altair можно найти в документах.
Что касается экстента по оси y, он автоматически настраивается в соответствии с данными, поэтому я хотел бы взглянуть на значения, которые у вас есть, и убедиться, что нет действительно больших значений, которые отклоняются от оси. Если вы хотите изменить масштаб оси вручную, вы можете использовать что-то вроде alt.Y('sum(confirmed):Q', scale=alt.Scale(domain=0, 1000))