python - Matplotlib: align xtick labels -
i have generated following plot using code below. position xtick labels @ appropriate place. currently, misleading , first label 12/06 missing.
the code follows:
import matplotlib.pyplot plt import datetime dt import matplotlib.dates 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() 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 12/06/2016 09/07/2016") plt.ylabel("daily hits") plt.title("count of daily visitors") plt.show()
you can customize position of x-ticks explicitly passing list, e.g. mark every date in list tick, do
plt.gca().xaxis.set_ticks(date) instead of
plt.gca().xaxis.set_major_locator(mdates.daylocator(interval=2)) to avoid over-dense ticks, pass e.g. date[::2].

Comments
Post a Comment