Меня сводит с ума то, что я не могу сделать то, что должно быть достаточно простым. У меня есть временные ряды, которые я сгруппировал по годам, чтобы я мог строить их каждый год и сравнивать их. Когда я строю график, у меня 21 линия, поэтому вместо поля легенды я хотел бы добавить год в конец каждой строки, например, вот этот график (пример):
Я создал функцию, которая берет любой временной ряд и возвращает этот график, и я изо всех сил пытаюсь добавить эту пользовательскую метку / аннотацию.
Мой код такой:
def plot_by_year(ts):
# first I group the time series (ts) by year:
year_group = ts.groupby(pd.Grouper(freq ='A'))
yearly = pd.DataFrame()
for year, group in year_group:
yearly[year.year] = group.values.ravel()
# now to plot it, the easy mode is:
yearly.plot(figsize = (12,14), legend=True)
plt.gca().legend(loc='center left', bbox_to_anchor=(1, .5));
Тем не менее, это дает мне только поле с легендой за пределами графика (см. График ниже)
Альтернатива, которую я пробую, следуя эта инструкция такова:
for rank, column in enumerate(years):
plt.plot(np.arange(0,13), yearly[column].values, lw=2.5)
y_pos = yearly[column].values[-1] - 0.5
plt.text(12, y_pos, rank)
Это дает мне KeyError: 1996
, это первый год моих данных. Я пробовал так много вещей, что даже не знаю, что делаю. Помощь!