Подтвердить что ты не робот

Графическая диаграмма matplotlib с датами

Чтобы получить бары, где ось x - это даты, я делаю что-то вроде этого:

import numpy as np
import matplotlib.pyplot as plt
import datetime

x = [datetime.datetime(2010, 12, 1, 0, 0),
    datetime.datetime(2011, 1, 1, 0, 0),
    datetime.datetime(2011, 5, 1, 1, 0)]
y = [4, 9, 2]

ax = plt.subplot(111)
barWidth=20
ax.bar(x, y, width=barWidth)
ax.xaxis_date()

plt.show()

enter image description here

Однако графики не центрируются вокруг x. Если ранее использовались ax.bar(x-barWidth/2., y, width = barWidth), чтобы получить bar, которые центрированы вокруг x. Есть ли способ получить то же самое, когда значения по оси x являются датами?

4b9b3361

Ответ 1

Я думаю, вам нужно align='center' ключевое слово для метода bar.

Небольшие изменения в вашем примере:

import numpy as np
import matplotlib.pyplot as plt
import datetime

x = [datetime.datetime(2010, 12, 1, 0, 0),
    datetime.datetime(2011, 1, 1, 0, 0),
    datetime.datetime(2011, 5, 1, 1, 0)]
y = [4, 9, 2]

ax = plt.subplot(111)
barWidth=20
ax.bar(x, y, width=barWidth, align='center') #< added align keyword
ax.xaxis_date()

plt.savefig('baralign.png')
plt.show()

привести к следующему рисунку:

enter image description here

Это довольно прямой ответ, если вы знаете, где искать. matplotlib имеет обширную документацию, а для каждого метода построения разработчики предоставляют подробное описание аргументов ключевого слова.