如何在X轴上显示所有日期值?

时间:2019-06-17 01:31:14

标签: python matplotlib

我在x轴上有以下日期,并且图形未显示所有值。我需要显示所有x值的什么设置?

drray2 ['2019-04-23', '2019-04-25', '2019-04-29', '2019-04-30', '2019-05-01', '2019-05-02', '2019-05-06', '2019-05-13', '2019-05-15', '2019-05-16', '2019-05-20', '2019-05-23', '2019-05-24', '2019-05-28', '2019-06-11', '2019-06-12', '2019-06-14']
countarray2 [1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 3, 1]

p1=plt.bar(converted_dates_2,countarray2,color="Green", width=barWidth,label="second load")
plt.show()

2 个答案:

答案 0 :(得分:1)

不知道为什么不向您显示,我在本地使用xticks属性运行了它: 代码:

x = ['2019-04-23', '2019-04-25', '2019-04-29', '2019-04-30', '2019-05-01', '2019-05-02', '2019-05-06', '2019-05-13', '2019-05-15', '2019-05-16', '2019-05-20', '2019-05-23', '2019-05-24', '2019-05-28', '2019-06-11', '2019-06-12', '2019-06-14']
y = [1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 3, 1]
plt.bar(x,y,color="Green")
plt.xticks(rotation=90)
plt.show()

图形是:

Final Plot

答案 1 :(得分:1)

您可以将x轴的频率设为1

ax.xaxis.set_major_locator(dates.DayLocator(interval=1))

使用您之前提供的代码完成答案

import matplotlib.pyplot as plt
from matplotlib import dates
import datetime

fig, ax = plt.subplots(figsize=(8, 6))

darray1 = ['2019-05-21', '2019-05-22', '2019-05-23', '2019-05-24', '2019-05-27', '2019-05-29', 
          '2019-05-31', '2019-06-01', '2019-06-03', '2019-06-04', '2019-06-07', '2019-06-10', 
          '2019-06-11', '2019-06-12', '2019-06-13', '2019-06-14'] 
countarray1 = [1, 1, 2, 1, 1, 1, 2, 1, 2, 4, 3, 9, 4, 2, 7, 3]

darray2 = ['2019-05-20', '2019-05-23', '2019-05-24', '2019-05-28', '2019-06-11', '2019-06-12', '2019-06-14'] 
countarray2 = [1, 2, 1, 1, 1, 3, 1]

converted_dates_1 = list(map(datetime.datetime.strptime, darray1, len(darray1)*['%Y-%m-%d']))
converted_dates_2 = list(map(datetime.datetime.strptime, darray2, len(darray2)*['%Y-%m-%d']))
formatter = dates.DateFormatter('%Y-%m-%d')

plt.bar(converted_dates_1,countarray1,color="blue",edgecolor='white', width=0.5,label="First Load")
plt.bar(converted_dates_2,countarray2,color="Green", width=0.5,label="Second Load") 

ax.xaxis.set_major_formatter(formatter)
plt.gcf().autofmt_xdate(rotation=90)
ax.xaxis.set_major_locator(dates.DayLocator(interval=1))

plt.show()

enter image description here