【问题标题】:Matplotlib: align xtick labelsMatplotlib:对齐 xtick 标签
【发布时间】:2017-02-02 01:28:41
【问题描述】:

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

代码如下:

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()

【问题讨论】:

    标签: python python-2.7 matplotlib data-visualization


    【解决方案1】:

    您可以通过显式传递一个列表来自定义 x-ticks 的位置,例如用打勾标记列表中的每个日期,你会这样做

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

    而不是

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

    为避免刻度线过于密集,您可以通过例如date[::2].

    【讨论】:

      猜你喜欢
      • 2014-07-25
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      相关资源
      最近更新 更多