【问题标题】:How to regulate number of ticks plot?如何调节刻度图的数量?
【发布时间】:2022-01-26 01:41:26
【问题描述】:
我有一个形状为 (2000, 2) 的数据框。有两列:值和日期。我想用 x 轴上的日期绘制它。但由于那里有 2000 天,我只想在 x 轴上保留 10 个刻度。我试过这个:
plt.plot(data["Date"], data["Value"])
plt.locator_params(axis='x', nbins=10)
plt.show()
但情节是这样的:
如何解决?
【问题讨论】:
标签:
python
python-3.x
matplotlib
plot
【解决方案1】:
根据您的情节,我将假设您的问题是您的“日期”列是字符串,而不是日期时间(或熊猫的时间戳),因此 matplotlib 将其视为类别。如果它是类似日期时间的,matplotlib 会自动选择一个合适的刻度间距:
您需要将这些字符串转换回日期时间,例如使用 dateutil.parser
from dateutil import parser
data['Date_dt'] = data['Date'].apply(parser.parse)
或通过 strptime(args 中的格式化字符串可能会根据您的日期格式而改变)
from datetime import datetime
data['Date_dt'] = data['Date_str'].apply(datetime.strptime, args=['%Y-%m-%d %H:%M:%S'])
如果出于某种晦涩的原因,您真的只想要 10 个滴答声,您可以按照以下方式进行操作:
plt.xticks(pd.date_range(data['Date'].min(), data['Date'].max(), periods=10))