如何调节刻度图的数量?
How to regulate number of ticks plot?
我有一个形状为 (2000, 2) 的数据框。有两列:值和日期。我想在 x 轴上用日期绘制它。但是因为那里有 2000 天,我只想在 x 轴上保留 10 个刻度。我试过这个:
plt.plot(data["Date"], data["Value"])
plt.locator_params(axis='x', nbins=10)
plt.show()
但是剧情是这样的:
如何解决?
根据您的情节,我假设您的问题是您的“日期”列是字符串,而不是日期时间(或 pandas' 时间戳),因此 matplotlib 将其视为类别。如果它是类似日期时间的,matplotlib 会自动 select 一个有点合适的刻度间距:
您需要将这些字符串转换回日期时间,例如 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))
我有一个形状为 (2000, 2) 的数据框。有两列:值和日期。我想在 x 轴上用日期绘制它。但是因为那里有 2000 天,我只想在 x 轴上保留 10 个刻度。我试过这个:
plt.plot(data["Date"], data["Value"])
plt.locator_params(axis='x', nbins=10)
plt.show()
但是剧情是这样的:
如何解决?
根据您的情节,我假设您的问题是您的“日期”列是字符串,而不是日期时间(或 pandas' 时间戳),因此 matplotlib 将其视为类别。如果它是类似日期时间的,matplotlib 会自动 select 一个有点合适的刻度间距:
您需要将这些字符串转换回日期时间,例如 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))