У меня есть ряд ежемесячных данных инвентаризации с 2017 года.
У меня есть инвентаризация с декабря2018 года
Я пытаюсь нанести данные инвентаризации на ежемесячно-сезонной основе, а затем наложить данные инвентаризации_прогноз с января 2015 года по декабрь 2019 года.
Датафрейм выглядит так:
Первый способ, которым я пытался сделать график, показывает все данные, которые я хочу, но я не могу контролировать цвет линии inventory_zj
. В его цвете преобладает color=year(date):N
из alt.Chart
, который я настроил. Он игнорирует color='green'
, который я передаю mark_line()
base = alt.Chart(inv.loc['2000':].reset_index(), title=f"usa total inventory").mark_line().encode(
x='month',
y="inventory",
color="year(date):N"
)
#this ignores my 'green' color instruction, and marks it the same light blue 2019 color
joe = base.mark_line(color='green').encode(
alt.Y('inventory_zj', scale=alt.Scale(zero=False), )
)
base+joe
Я пытался использовать многоуровневую систему, но она совсем не работает - я не могу отобразить слой "joe"
base = alt.Chart(inv.loc['2000':].reset_index(), title=f"usa total inventory").encode(
x='month(date)'
)
doe = base.mark_line().encode(
alt.Y('inventory', scale=alt.Scale(zero=False), ),
color="year(date):N"
)
joe = base.mark_line(color="green").encode(
alt.Y('inventory_zj', scale=alt.Scale(zero=False), ),
)
#looks identical to the first example
alt.layer(
doe, joe
).resolve_scale(
y='shared'
).configure_axisLeft(labelColor='black').configure_axisRight(labelColor='green',titleColor='green')
#independent shows a second y-axis (which is different from the left y-axis) but no line
alt.layer(
doe, joe
).resolve_scale(
y='independent'
).configure_axisLeft(labelColor='black').configure_axisRight(labelColor='green',titleColor='green')
Я чувствую, что, должно быть, пытаюсь собрать эту схему в корне неверным образом. Я должен быть в состоянии разделить ту же левую ось Y, иметь исторические данные, раскрашенные по году, и иметь уникальный цвет для данных, прогнозируемых на 2019 год. Но, похоже, я все путаю.