Matplotlib: Как создать таблицу ниже, содержащую все метки оси X и линии сетки соответственно? - PullRequest
0 голосов
/ 25 марта 2020
data = {'tenor': ['1w','1m','3m','6m','12m','1y','2y','3y','4y','5y','6y','7y','10y','15y','20y','25y','30y','40y','50y'],'rate_s': [0.02514, 0.026285, 0.0273, 0.0279, 0.029616, 0.026526, 0.026028, 0.024, 0.025958,0.0261375, 0.026355, 0.026, 0.026898, 0.0271745, 0.02741, 0.027, 0.0275, 0.0289,0.0284],'rate_t':[ 0.02314, 0.024285, 0.0253,0.0279, 0.028616, 0.026526,0.027028, 0.024, 0.025958,0.0271375, 0.02355, 0.026, 0.024898, 0.0271745, 0.02641,0.027, 0.0255, 0.0289,0.0284]}

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

ax = plt.gca()

df.plot(kind='line',x='tenor',y='rate_s',marker='o',color='green',ax=ax)
df.plot(kind='line',x='tenor',y='rate_y',marker='o', color='red', ax=ax)
ax.minorticks_on()
ax.grid(which='major',linestyle='-', linewidth='0.5', color='blue')
ax.grid(which='minor', linestyle=':', linewidth='0.5', color='black')
plt.show()

enter image description here

1 Ответ

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

Я бы преобразовал периоды времени в timedelta и построил график:

df['periods'] = pd.to_timedelta(df.tenor).dt.total_seconds()

fig, ax = plt.subplots(figsize=(12,6))
df.plot(x='periods',y=['rate_s','rate_t'], ax=ax)
ax.set_xticks(df.periods);
ax.set_xticklabels(df.tenor)
plt.grid()
plt.show()

Вывод:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...