Управление шириной столбцов в matplotlib с помощью данных за месяц

StackOverflow https://stackoverflow.com/questions/886716

  •  23-08-2019
  •  | 
  •  

Вопрос

Когда я отображаю данные, отобранные за месяц, с помощью столбцов, их ширина очень мала.Если я установлю для параметра X axis minor locator значение DayLocator(), я увижу, что ширина полос скорректирована на 1 день, но я бы хотел, чтобы они заполняли целый месяц.

Я попытался установить для локатора незначительных тиков значение MonthLocator() безрезультатно.

[править]

Возможно, пример будет более наглядным, вот ipython -pylab пример того, что я имею в виду :

x = [datetime.datetime(2008, 1, 1, 0, 0),
    datetime.datetime(2008, 2, 1, 0, 0),
    datetime.datetime(2008, 3, 1, 0, 0),
    datetime.datetime(2008, 4, 1, 0, 0),
    datetime.datetime(2008, 5, 1, 0, 0),
    datetime.datetime(2008, 6, 1, 0, 0),
    datetime.datetime(2008, 7, 1, 0, 0),
    datetime.datetime(2008, 8, 1, 0, 0),
    datetime.datetime(2008, 9, 1, 0, 0),
    datetime.datetime(2008, 10, 1, 0, 0),
    datetime.datetime(2008, 11, 1, 0, 0),
    datetime.datetime(2008, 12, 1, 0, 0)]

y = cos(numpy.arange(12) * 2)

bar(x, y)

Это дает полосы шириной 12 2 пикселя, я бы хотел, чтобы они были шире и расширялись от месяца к месяцу.

Это было полезно?

Решение

Просто используйте width аргумент ключевого слова:

bar(x, y, width=30)

Или, поскольку в разных месяцах разное количество дней, чтобы все выглядело хорошо, вы можете использовать последовательность:

bar(x, y, width=[(x[j+1]-x[j]).days for j in range(len(x)-1)] + [30])
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top