2016-09-24 159 views
0

我已经使用下面的代码生成了以下图。我想将xtick标签放在适当的位置。目前,这是误导性的,第一个标签12/06丢失。Matplotlib:对齐xtick标签

enter image description here

的代码如下:

import matplotlib.pyplot as plt 
import datetime as dt 
import matplotlib.dates as mdates 

list_date = 
['2016-06-12', 
'2016-06-13', 
'2016-06-14', 
'2016-06-15', 
'2016-06-16', 
'2016-06-17', 
'2016-06-18', 
'2016-06-19', 
'2016-06-20', 
'2016-06-21', 
'2016-06-22', 
'2016-06-23', 
'2016-06-24', 
'2016-06-25', 
'2016-06-26', 
'2016-06-27', 
'2016-06-28', 
'2016-06-29', 
'2016-06-30', 
'2016-07-01', 
'2016-07-02', 
'2016-07-03', 
'2016-07-04', 
'2016-07-05', 
'2016-07-06', 
'2016-07-07', 
'2016-07-08', 
'2016-07-09'] 

list_count = 
[9490, 
595442, 
566104, 
664133, 
655221, 
612509, 
607395, 
597703, 
613051, 
635764, 
705905, 
535869, 
583516, 
630818, 
641495, 
697591, 
578071, 
547280, 
561775, 
581784, 
594175, 
552944, 
545131, 
493400, 
604280, 
510182, 
518883, 
413648] 

date = [dt.datetime.strptime(d,'%Y-%m-%d').date() for d in list_date] 

plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d/%m')) 
plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=2)) 
plt.bar(date, list_count, align = 'center') 
plt.gcf().autofmt_xdate() 
plt.grid() 
plt.xlabel("Period from 12/06/2016 to 09/07/2016") 
plt.ylabel("Daily hits") 
plt.title("Count of daily visitors") 
plt.show() 

回答

1

可以通过明确地传递的列表,例如定制的x蜱的位置以纪念在列表中带勾每次约会,你会做

plt.gca().xaxis.set_ticks(date) 

,而不是

plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=2)) 

避免过度密集的刻度,你可以通过如date[::2]

+0

谢谢你的工作。 –