我有两个数据集,并试图显示在同一张图上以进行比较。在同一图上绘制条形图时。我看到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()
答案 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()