Изменение частоты datetime xticks - matplotlib [duplicate]

Чтобы проверить, является ли ваша проблема установки pip, попробуйте использовать easy_install для установки более ранней версии pip:

easy_install pip==9.0.1

. Если это произойдет, pip должно работать. Затем вы можете установить любую другую версию pip, которую вы хотите:

pip install pip==10....

Или вы можете просто остаться с version 9.0.1, так как ваш проект требует версии> = 9.0.

Попробуйте снова создать проект.

3
задан pceccon 17 February 2016 в 20:02
поделиться

2 ответа

Это альтернативный метод построения графика plot_date, который вы можете использовать, если ваша независимая переменная datetime, например, вместо использования более общего метода plot:

import datetime
data = np.random.rand(24)

#a list of time: 00:00:00 to 23:00:00
times = [datetime.datetime.strptime(str(i), '%H') for i in range(24)]

#'H' controls xticklabel format, 'H' means only the hours is shown
#day, year, week, month, etc are not shown
plt.plot_date(times, data, fmt='H')
plt.setp(plt.gca().xaxis.get_majorticklabels(),
         'rotation', 90)

Преимущество этого заключается в том, что теперь вы можете легко контролировать плотность xticks, если мы хотим иметь галочку каждый час, мы вставим эти строки после plot_date:

##import it if not already imported
#import matplotlib.dates as mdates
plt.gca().xaxis.set_major_locator(mdates.HourLocator())

5
ответ дан CT Zhu 25 August 2018 в 20:49
поделиться

Вы можете использовать форматировщики для форматирования ваших результатов так, как вы хотите. Например, чтобы напечатать месячные имена, давайте сначала определим функцию с целым числом до аббревиатуры месяца:

def getMonthName(month_number):
    testdate=datetime.date(2010,int(month_number),1)
    return testdate.strftime('%b')

Здесь я создал произвольную дату с правильным месяцем и возвратил этот месяц. Проверьте документа datetime на наличие доступных кодов формата, если это необходимо. Если это всегда проще, чем просто задать список вручную, это еще один вопрос. Теперь давайте построим несколько ежемесячных тестовых данных:

import matplotlib.pyplot as plt
import matplotlib.ticker as mtick
import numpy as np

x_data=np.arange(1,12.5,1)
y_data=x_data**2 # Just some arbitrary data
plt.plot(x_data,y_data)
plt.gca().xaxis.set_major_locator(mtick.FixedLocator(x_data)) # Set tick locations
plt.gca().xaxis.set_major_formatter(mtick.FuncFormatter(lambda x,p:getMonthName(x)))
plt.show()

Сообщение здесь состоит в том, что вы можете использовать matplotlib.ticker.FuncFormatter для использования любой функции для получения метки метки. Функция принимает два аргумента (значение и положение) и возвращает строку.

1
ответ дан Christoph 25 August 2018 в 20:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: