https://image.prntscr.com/image/22S0nz5YR3CaT-x4tBH8ig.png
Мне нужно создать легенду, подобную этой. Дополнительно: 1. Также я бы хотел исправить проблему с осью X (показывая .991 и .100 вместо 1950 1991 2020 2100) 2. Создание субтитров все еще невозможно? Должен ли я сделать второй слой с заголовком?
Написание с использованием плагина Altair (и больше всего интересно, можно ли это сделать без использования другого слоя (только с использованием класса Legend).
from altair import datum
import pandas as pd
url = "https://gist.githubusercontent.com/turiy/005f2ce11637fefcde8e9d6efdb0c2e6/raw/19e67bb3a6d63e7fd9f49a596e5d24404469bd63/population_prospects.csv"
df = pd.read_csv(url)
base = alt.Chart(df).transform_calculate(population=datum.population/1000).properties(title='Ukraine Population Prospecrs')
x_axis = alt.Axis(values=[1950,1991,2020,2100], domain=False, gridDash=[1,1])
x_scale = alt.Scale(domain=[1950, 2100])
x=alt.X('year:T', scale=x_scale, axis=x_axis)
y_axis = alt.Axis(domain=False, gridDash=[1,1])
y_scale = alt.Scale(domain=[15, 55])
y=alt.Y('population:Q', scale=y_scale, axis=y_axis)
base = base.encode(x=x, y=y)
layer1 = alt.layer(base.mark_line(color="#3288bd").transform_filter(alt.FieldRangePredicate(field="year", range=[1950, 2020])))
layer2 = alt.layer(base.mark_line(strokeDash=[6, 2]).transform_filter(alt.FieldRangePredicate(field="year", range=[2020, 2100])))
layer2 = layer2.encode(color=alt.Color("type:N", legend=None, scale=alt.Scale(range=["#d53e4f", "#d53e4f"])))
#.transform_calculate(population=datum.population/1000).properties(title='Ukraine Population Prospecrs')
Что я в данный моментполучить это https://image.prntscr.com/image/J8Qmb27RQR2UKMpZpSJcFg.png