Sto cercando di regolare la formattazione delle etichette del segno di spunta dell'asse x in modo che mostri solo i valori di anno e mese. Da quello che ho trovato online, devo usare mdates.DateFormatter
, ma non ha alcun effetto con il mio codice attuale così com'è. Qualcuno vede dove si trova il problema? (Le date sono l'indice del dataframe panda)Matplotlib DateFormatter per etichetta dell'asse non funzionante
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import pandas as pd
fig = plt.figure(figsize = (10,6))
ax = fig.add_subplot(111)
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
basicDF['some_column'].plot(ax=ax, kind='bar', rot=75)
ax.xaxis_date()
grazie ragazzi!
codice scenario riproducibile:
import numpy as np
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
import pandas as pd
rng = pd.date_range('1/1/2014', periods=20, freq='m')
blah = pd.DataFrame(data = np.random.randn(len(rng)), index=rng)
fig = plt.figure(figsize = (10,6))
ax = fig.add_subplot(111)
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
blah.plot(ax=ax, kind='bar')
ax.xaxis_date()
Ancora non si può ottenere solo l'anno e il mese di presentarsi ...
cosa succede se si imposta il formato dopo si disegna le barre? –
@PaulH - se imposto il formato dopo .plot, ottieni un errore come questo: ValueError: DateFormatter ha trovato un valore di x = 0, che è una data non valida. Questo di solito si verifica perché non hai informato l'asse che sta registrando le date, ad es. Con ax.xaxis_date(). È lo stesso per se lo metto prima di ax.xaxis_date() o dopo. – SpicyClubSauce
oof - questo è il motivo per cui odio complottare con i panda. puoi rendere riproducibile il tuo esempio (ad esempio, aggiungi un codice che crei 'basisDF' senza file esterni) e proverò a dare un'occhiata. –