Редактирование форматирования даты для меток оси X в matplotlib
Я ищу, чтобы отредактировать форматирование дат по оси X. На рисунке ниже показано, как они отображаются на моей гистограмме по умолчанию. Я хотел бы удалить повторение 'Dec' и '2012' и просто иметь фактические числа даты вдоль оси X.
Любые предложения относительно того, как я могу это сделать?
4 ответа
Короче:
import matplotlib.dates as mdates
myFmt = mdates.DateFormatter('%d')
ax.xaxis.set_major_formatter(myFmt)
Много примеров на сайте matplotlib. Тот, который я чаще всего использую, находится здесь
Хотя ответ, данный Полом Н., показывает существенную часть, это не полный пример. С другой стороны, пример matplotlib кажется довольно сложным и не показывает, как использовать дни.
Итак, для всех нуждающихся вот полный рабочий пример:
from datetime import datetime
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter
myDates = [datetime(2012,1,i+3) for i in range(10)]
myValues = [5,6,4,3,7,8,1,2,5,4]
fig, ax = plt.subplots()
ax.plot(myDates,myValues)
myFmt = DateFormatter("%d")
ax.xaxis.set_major_formatter(myFmt)
## Rotate date labels automatically
fig.autofmt_xdate()
plt.show()
Из пакета matplotlib.dates, как показано в этом примере, формат даты может быть применен к метке оси и отметкам для графика.
Ниже я привел пример маркировки отметок осей для мультиплотов.
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd
df = pd.read_csv('US_temp.csv')
plt.plot(df['Date'],df_f['MINT'],label='Min Temp.')
plt.plot(df['Date'],df_f['MAXT'],label='Max Temp.')
plt.legend()
####### Use the below functions #######
dtFmt = mdates.DateFormatter('%b') # define the formatting
plt.gca().xaxis.set_major_formatter(dtFmt) # apply the format to the desired axis
plt.show()
Так просто, как, что
Это работает идеально для меня
import matplotlib.pyplot as plt
from matplotlib.ticker import (MultipleLocator, FormatStrFormatter,
AutoMinorLocator)
import matplotlib.dates as mdates
dtFmt = mdates.DateFormatter('%Y-%b') # define the formatting
plt.gca().xaxis.set_major_formatter(dtFmt)
# show every 12th tick on x axes
plt.gca().xaxis.set_major_locator(mdates.MonthLocator(interval=1))
plt.xticks(rotation=90, fontweight='light', fontsize='x-small',)