De datumopmaak van vinkjes op de x-as in matplotlib bewerken

Ik ben op zoek naar de opmaak van de datums op de x-as. De onderstaande afbeelding laat zien hoe ze standaard in mijn staafdiagram worden weergegeven. Ik wil de herhaling van ‘dec’ en ‘2012’ verwijderen en alleen de werkelijke datumnummers langs de x-as hebben.

Enige suggesties hoe ik dit kan doen?


Antwoord 1, autoriteit 100%

Kortom:

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

Veel voorbeelden op de matplotlib-website. Degene die ik het meest gebruik is hier


Antwoord 2, autoriteit 39%

Hoewel het antwoord van Paul H het essentiële deel laat zien, is het geen volledig voorbeeld. Aan de andere kant lijkt het matplotlib-voorbeeldnogal ingewikkeld en laat niet zien hoe je dagen moet gebruiken.

Dus voor iedereen in nood is hier een volledig werkend voorbeeld:

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()

Antwoord 3, autoriteit 3%

Van het pakket matplotlib.dateszoals getoond in deze voorbeeldhet datumformaat kan worden toegepast op het aslabel en vinkjes voor plot.

Hieronder heb ik een voorbeeld gegeven voor het labelen van as-ticks voor multiplots

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()

Zo simpel is het

Other episodes