obispo osmond
Estoy buscando editar el formato de las fechas en el eje x. La siguiente imagen muestra cómo aparecen en mi gráfico de barras de forma predeterminada. Me gustaría eliminar la repetición de ‘diciembre’ y ‘2012’ y solo tener los números de fecha reales a lo largo del eje x.
¿Alguna sugerencia sobre cómo puedo hacer esto?
En breve:
import matplotlib.dates as mdates
myFmt = mdates.DateFormatter('%d')
ax.xaxis.set_major_formatter(myFmt)
Muchos ejemplos en el sitio web de matplotlib. El que más uso es aquí
-
¿Hay algún método alternativo sin usar el
ax.xaxis
pero usandoplt.<command>
?– 3kstc
16 de junio de 2017 a las 5:45
-
@3kstc Tal vez, pero no puedo imaginar una situación en la que confiar ambiguamente en la máquina de estado sea preferible al comando más explícito.
– Pablo H.
16 de junio de 2017 a las 15:56
-
Para obtener una vista rápida de todos los formatos de fecha y hora posibles, utilice strftime.org.
– La Importancia De Ser Ernesto
8 de febrero de 2018 a las 19:14
-
Nota
ax
se define en la respuesta de @Robino– javerim
24 de enero de 2019 a las 3:56
-
@3kstc Si quieres usar
plt
en vez deax
tu puedes hacer:plt.gca().xaxis.set_major_formatter(myFmt)
– Charelf
11 de noviembre de 2021 a las 14:35
robino
Si bien la respuesta dada por Paul H muestra la parte esencial, no es un ejemplo completo. Por otro lado el ejemplo matplotlib parece bastante complicado y no muestra cómo usar los días.
Entonces, para todos los que lo necesitan, aquí hay un ejemplo de trabajo completo:
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()
del paquete matplotlib.fechas como se muestra en este ejemplo el formato de fecha se puede aplicar a la etiqueta del eje y las marcas para el gráfico.
A continuación, he dado un ejemplo para etiquetar marcas de eje para multiparcelas
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()
Tan simple como eso
lepi
Esto funciona perfectamente para mí.
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",)
La respuesta aquí funcionó para mí: stackoverflow.com/questions/30133280/…
– Mahdi
21 de septiembre de 2016 a las 8:53