2013-02-18 2 views
23

Я ищу для редактирования форматирования дат на оси x. На рисунке ниже показано, как они отображаются на моей гистограмме по умолчанию. Я хотел бы удалить повторение «Dec» и «2012» и просто иметь фактические числа чисел по оси x.Редактирование форматирования даты меток по типу x в matplotlib

Любые предложения относительно того, как я могу это сделать?

enter image description here

+0

Ответ здесь работал для меня: http://stackoverflow.com/questions/30133280/pandas-bar-plot-changes-date -format – Mahdi

ответ

38

Короче:

import matplotlib.dates as mdates 
myFmt = mdates.DateFormatter('%d') 
ax.xaxis.set_major_formatter(myFmt) 

Многие примеры на сайте Matplotlib. Единственным, что я обычно использую, является here

+2

Существует ли альтернативный метод без использования 'ax.xaxis', но с использованием' plt. '? – 3kstc

+0

@ 3kstc Возможно, но я не могу представить ситуацию, когда двусмысленно полагаться на конечный автомат предпочтительнее более явной команды. –

+0

Для быстрого просмотра всех возможных форматов datetime используйте [strftime.org] (http://strftime.org). – ImportanceOfBeingErnest

3

Хотя ответ Павла H показывает существенную часть, это не полный пример. С другой стороны, matplotlib example кажется довольно сложным и не показывает, как использовать дни.

Так что для всех нуждающихся здесь является полный рабочий пример:

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() 
Смежные вопросы