使用matplotlib:x标签向右移动打印python日期

使用matplotlib:x标签向右移动打印python日期,python,datetime,matplotlib,Python,Datetime,Matplotlib,使用Matplotlib打印日期时,X标签会向右移动。只有当有超过10-15个条目时才会发生。我认为问题在于我如何处理python日期,但无法找出我的代码到底出了什么问题。我将非常感谢你的帮助 我得到的日期列表格式如下: mydates = [datetime.datetime(2016, 12, 17, 8, 0), datetime.datetime(2016, 12, 4, 8, 0), etc.] 我的代码: x = mydates x = date2num(x) y = female

使用Matplotlib打印日期时,X标签会向右移动。只有当有超过10-15个条目时才会发生。我认为问题在于我如何处理python日期,但无法找出我的代码到底出了什么问题。我将非常感谢你的帮助

我得到的日期列表格式如下:

mydates = [datetime.datetime(2016, 12, 17, 8, 0), datetime.datetime(2016, 12, 4, 8, 0), etc.]
我的代码:

x = mydates
x = date2num(x)
y = female_values
z = male_values

plt.figure(figsize=(10, 4.5))
matplotlib.rcParams.update({'font.size': 10})
ax = plt.subplot(111)
width = 0.2
opacity = 0.5
ax.bar(x, y, width=width, color='orange', align='center', alpha=opacity)
ax.bar(x+width, z, width=width, color='green', align='center', alpha=opacity)
ax.xaxis_date()
ax.xaxis.set_major_formatter(mdates.DateFormatter('%d/%m'))
plt.xticks(x+(width/2), rotation=60)
plt.legend(['Female', 'Male'], loc='upper left')
timestr = time.strftime("%Y%m%d-%H%M%S")
plt.savefig('myapp/static/charts/'+timestr+'.png')
情节:

更多示例(14天):

15天:


该问题仅出现在2.0之前的matplotlib版本中

通过更新matplotlib,解决方案是手动设置边距:

plt.margins(x=0.04)

这意味着在数据的左侧和右侧应有一个轴大小的4%的空间。您当然可以尝试其他值。

您是否尝试过使用设置刻度设置XTICK的数量?不,我没有。是否应该是类似于
ax.setxticks(range(len(mydates)))
?是的,请尝试一下。当我添加这一行时,所有标签都压到了右侧。对我来说,绘图看起来不错。如果这仍然是一个问题,请添加更多关于情节在多大程度上不符合您的期望的细节。最后!非常感谢你。现在工作得很好。