在x轴上重叠处理第二组数据python-order不保留

时间:2019-06-16 15:31:17

标签: matlab matplotlib

我有两个数据集,并试图显示在同一张图上以进行比较。在同一图上绘制条形图时。我看到2个值超出了x轴。当我单独尝试时,每个图看起来都不错.2019-5-20,2019-5-28来自第二组的数据位于末尾,而不是顺序排列。

我的第一个数据集如下:

drray1 ['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]

第二个数据集如下:

drray2 ['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]

当我尝试绘制条形图时:

p1=plt.bar(darray1,countarray1,color="blue",edgecolor='white', 
width=barWidth,label="First Load")

p1=plt.bar(darray2,countarray2,color="Green", width=barWidth,label="Second Load")
plt.show()

1 个答案:

答案 0 :(得分:0)

当前您正在绘制字符串,因此无法识别日期顺序。您需要使用here

所示的方法将字符串日期转换为datetime个对象
import matplotlib.pyplot as plt
from matplotlib import dates
import datetime

fig, ax = plt.subplots()

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)
plt.show()

enter image description here