首页 > 解决方案 > 如何在 Y 轴上绘制每个索引值

问题描述

我试图弄清楚如何在我的数据框中以每小时精度(索引列具有每小时值)绘制 X 轴。目前,它只是每个月都贴上标签。我希望每个 Y 点“关闭值列”都有一个标签。

我现在的代码:

import matplotlib.pyplot as plt
from matplotlib import dates as mpl_dates
import pandas as pd


data = pd.read_csv('C:/Users/renat/.spyder-py3/1H data new.csv', index_col=0, parse_dates=True)
data.index = pd.to_datetime(data.index, format='%Y-%m-%d %H:%M:%S')

plt.figure(figsize=(80, 8))
plt.plot_date(data.index,data['close'], linestyle='solid',xdate=True, marker=None)
plt.gcf().autofmt_xdate()
date_format = mpl_dates.DateFormatter('%Y-%m-%d %H')

plt.gca().xaxis.set_major_formatter(date_format)
plt.title('Price Chart for TEST')
plt.xlabel('Date')
plt.ylabel('Price ($)')
plt.show()

标签: pythonpandasmatplotlib

解决方案


感谢@r-begginers 的评论,我能够实现我想要的。我用 X 轴的每小时标签打印财务数据的完成代码如下:

import matplotlib.pyplot as plt
from matplotlib import dates as mpl_dates
import pandas as pd


data = pd.read_csv('C:/Users/renat/.spyder-py3/1H data new.csv', index_col=0, parse_dates=True)
data.index = pd.to_datetime(data.index, format='%Y-%m-%d %H:%M:%S')

plt.figure(figsize=(100, 8))
plt.plot_date(data.index,data['close'], linestyle='solid',xdate=True, marker=None)

days = mpl_dates.DayLocator(interval=1)
days_fmt = mpl_dates.DateFormatter('%Y-%m-%d %H:%M')
plt.gca().xaxis.set_major_locator(days)
plt.gca().xaxis.set_major_formatter(days_fmt)

plt.grid()
plt.xticks(rotation=90, fontsize=6)
plt.title('Price Chart for TEST')
plt.xlabel('Date')
plt.ylabel('Price ($)')
plt.show()

我只是替换了与 x 轴格式相关的三行。

在:

hours = mpl_dates.HourLocator(interval=1)
hours_fmt = mpl_dates.DateFormatter('%H')
plt.gca().xaxis.set_major_locator(hours)
plt.gca().xaxis.set_major_formatter(hours_fmt)

出去:

plt.gcf().autofmt_xdate()
date_format = mpl_dates.DateFormatter('%Y-%m-%d %H')
plt.gca().xaxis.set_major_formatter(date_format)

我还进行了一些其他更改,但它们与问题无关。

再次感谢@r-begginers 为我指明了这个方向。


推荐阅读