我正在使用 matplotlib.dates 绘制一个条形图,其中包含在特定日期发生的实例(显示为字符串列表),并使用 matplotlib.dates.datestr2num 显示每个日期的两组数据(根据Python中的最佳答案matplotlib 多条)。
但是,对于低于该月 12 天的日期,该图将日期解释为 MM/DD/YY 格式,而对于高于该月 12 天的日期,它会将日期解释为 DD/MM/YY,导致数据在情节周围跳跃。我认为问题可能在于我如何使用 datestr2num,但不确定如何强制它采用一种或另一种格式。
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter, AutoDateLocator, AutoDateFormatter, datestr2num
days = ['30/01/2019', '31/01/2019', '01/02/2019', '02/02/2019', '03/02/2019', '04/02/2019']
adata = [1, 9, 10, 3, 7, 6]
bdata = [1, 2, 11, 3, 6, 2]
x=datestr2num(days)
w=0.25
fig = plt.figure(figsize = (8,4))
ax = fig.add_subplot(111)
ax.bar(x-w, adata, width=2*w, color='g', align='center', tick_label = days)
ax.bar(x+w, bdata, width=2*w, color='r', align='center', tick_label = days)
ax.xaxis_date()
ax.xaxis.set_major_locator(AutoDateLocator(minticks=3, interval_multiples=False))
ax.xaxis.set_major_formatter(DateFormatter("%d/%m/%y"))
plt.show()
在上面的示例中,adata
并且bdata
在随后的日期(1 月 30 日至 2 月 4 日),所有条形显示为彼此相邻,但绘图显示 1 月 2 日和 4 月 2 日之间的数据,使数据显示出来秩序。
任何帮助或澄清都会有所帮助,谢谢!