Matplotlib:对齐xtick标签

时间:2016-09-24 06:49:04

标签: python python-2.7 matplotlib data-visualization

我使用下面的代码生成了以下图表。我想将xtick标签放在适当的位置。目前,它具有误导性,并且缺少第一个标签12/06

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 个答案:

答案 0 :(得分:1)

您可以通过显式传递列表来自定义x刻度的位置,例如要用勾选标记列表中的每个日期,您可以

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

而不是

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

为了避免过度密集的蜱,你可以通过例如date[::2]