我试图将日期列表添加到Matplotlib xticks
中,当我这样做时,实际图只保留xticks
就消失了。
例如,我有以下代码:
import numpy as np
import datetime as dt
import matplotlib.pyplot as plt
from matplotlib.dates import (DateFormatter, rrulewrapper, RRuleLocator, YEARLY)
# Generate random data and dates
data = np.random.randn(10000)
start = dt.datetime.strptime("2019-03-14", "%Y-%m-%d")
end = dt.datetime.strptime("2046-07-30", "%Y-%m-%d")
date = [start + dt.timedelta(days=x) for x in range(0, (end-start).days)]
rule = rrulewrapper(YEARLY, byeaster=1, interval=2)
loc = RRuleLocator(rule)
formatter = DateFormatter('%d/%m/%y')
fig, ax = plt.subplots()
ax.xaxis.set_major_locator(loc)
ax.xaxis.set_major_formatter(formatter)
ax.xaxis.set_tick_params(rotation=30, labelsize=10)
plt.plot(data)
# ax.set_xlim(min(date), max(date))
plt.show()
此代码绘制的数据如下所示:
现在,如果我取消注释ax.set_xlim(min(date), max(date))
并重新运行得到的代码:
您可以看到我只得到日期,格式正确,但没有格式。我不确定这是什么问题。任何帮助将不胜感激。
更新
如果我将data = np.random.randn(10000)
更改为data = np.random.randn(1000000)
,那么我就能看到那不是我想要的情节
答案 0 :(得分:0)
很有可能绘制了您的数据,但是没有正确的位置。如果您使用that example,则需要在代码中添加类似fig.autofmt_xdate()
的内容。
答案 1 :(得分:0)
方法是通过在plot方法中传递date
数组和data
数组。在给定的示例中将是:
import numpy as np
import datetime as dt
import matplotlib.pyplot as plt
from matplotlib.dates import (DateFormatter, rrulewrapper, RRuleLocator, YEARLY)
# Generate random data and dates
data = np.random.randn(10000)
start = dt.datetime.strptime("2019-03-14", "%Y-%m-%d")
end = dt.datetime.strptime("2046-07-30", "%Y-%m-%d")
date = [start + dt.timedelta(days=x) for x in range(0, (end-start).days)]
rule = rrulewrapper(YEARLY, byeaster=1, interval=2)
loc = RRuleLocator(rule)
formatter = DateFormatter('%d/%m/%y')
fig, ax = plt.subplots()
ax.xaxis.set_major_locator(loc)
ax.xaxis.set_major_formatter(formatter)
ax.xaxis.set_tick_params(rotation=30, labelsize=10)
plt.plot(date, data)
ax.set_xlim(min(date), max(date))
plt.show()
那么您会得到:
有关更多信息,请参见matplotlib.pyplot.plot()。