Наложение двух графиков DataSeries с одинаковым индексом - PullRequest
0 голосов
/ 15 марта 2020

Я извлек данные о температуре 2015 года и создал 2 DataSeries для рекордных максимумов и минимумов (df_2015_max и df_2015_min), где df_min и _max - рекордные минимумы и максимумы за 10-летний период. Эти серии имеют значения 37 и 32 соответственно.

df_2015_min = df_2015_min[df_2015_min < df_min]
df_2015_max = df_2015_max[df_2015_max > df_max]

Затем я переиндексировал эти серии, чтобы они соответствовали индексам df_min и _max, которые являются минимальными и максимальными температурами. Поэтому у меня есть значения NaN везде, где запись не нарушена.

df_2015_max.reindex(df_max.index)
df_2015_min.reindex(df_min.index)

Я думал, что если я нанесу их на существующий график, он автоматически будет правильно проиндексирован, но этого не произойдет, и я не не знаю, как это исправить.

plt.figure()

#plot data
ax1 = df_min.plot(label = "_nolegend_")
ax2 = df_max.plot(label = "_nolegend_")
df_2015_max.plot(marker = "o", label ="Record Breaking High", ax = ax2, linestyle = "none")
df_2015_min.plot(marker = "o", label ="Record Breaking Low", ax = ax1, linestyle = "none")


#fill_between data
plt.gca().fill_between(range(365), df_min, df_max, facecolor = "purple", alpha = 0.1)

#set axes labels and figure title

plt.title("Temperature record highs and lows (2004 - 2015) in °C")

#set xticks
plt.tick_params(left='off', bottom='on', labelleft='on', labelbottom='on')
ax1.set_xticks(range(0,360, 30)) #set approximate ticks for months in a year

#list comprehension, take each month from a year and format it as abbreviation (%b)
ax1.set_xticklabels([datetime(2010,i,1).strftime('%b') for i in range(1,13)]) 

#add legend
plt.legend()


plt.show()

Но результаты отображают значения с начала года, а не в соответствующие даты: График

Спасибо за помощь!

1 Ответ

0 голосов
/ 15 марта 2020

Неважно, ошибка не заключалась в переиндексации на месте:

df_2015_max = df_2015_max.reindex(df_max.index)
df_2015_min = df_2015_min.reindex(df_min.index)

исправили ее.

...