繁体   English   中英

如何使用`set_major_locator`将x-ticks设置为月份?

[英]How to set x-ticks to months with `set_major_locator`?

我正在尝试使用以下代码将x-ticks设置为 [Jan., Feb., ...]

import matplotlib.pyplot as plt
from matplotlib.dates import MonthLocator, DateFormatter
fig = plt.figure(figsize=[10, 5])
ax = fig.add_subplot(111)
ax.plot(np.arange(1000))
ax.xaxis.set_major_locator(MonthLocator())
ax.xaxis.set_major_formatter(DateFormatter('%b'))

我得到下图,没有 x-ticks 在此处输入图片说明

我想知道为什么所有的 x-ticks 都消失了? 我参考这个实现写了上面的代码

非常感谢。

您目前拥有的数据类型不是很清楚。 但以下是我在 x 轴上绘制月份的建议:

  1. 使用pd.to_datetime转换您的日期
  2. 将其设置为您的数据帧索引。
  3. 显式调用plt.set_xticks()方法

下面是一个重新创建数据的示例:

from datetime import datetime as dt
from datetime import timedelta

### create sample data
your_df = pd.DataFrame()
your_df['vals'] = np.arange(1000)

## make sure your datetime is considered as such by pandas
your_df['date'] = pd.to_datetime([dt.today()+timedelta(days=x) for x in range(1000)])
your_df=  your_df.set_index('date') ## set it as index

### plot it
fig = plt.figure(figsize=[10, 5])
ax = fig.add_subplot(111)
ax.plot(your_df['vals'])
plt.xticks(rotation='vertical')
ax.xaxis.set_major_locator(MonthLocator())
ax.xaxis.set_major_formatter(DateFormatter('%b'))

在此处输入图片说明

请注意,如果您不想绘制每个月,您可以通过删除主要定位器让 matplotlib 为您处理。

fig = plt.figure(figsize=[10, 5])
ax = fig.add_subplot(111)
ax.plot(your_df['vals'])
plt.xticks(rotation='vertical')
# ax.xaxis.set_major_locator(MonthLocator())
ax.xaxis.set_major_formatter(DateFormatter('%b'))

在此处输入图片说明

添加了进入提供的链接,并且您在使用的数据集中有一个DATE字段( boulder-precip.csv )。 您实际上可以遵循相同的程序并按月绘制它:

df = pd.read_csv('boulder-precip.csv')
df['DATE'] = pd.to_datetime(df['DATE'])
df = df.set_index('DATE')

fig = plt.figure(figsize=[10, 5])
ax = fig.add_subplot(111)
ax.plot(df['PRECIP'])
plt.xticks(rotation='vertical')
ax.xaxis.set_major_locator(MonthLocator())
ax.xaxis.set_major_formatter(DateFormatter('%b'))

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM