Ho un semplice grafico a linee impilate che ha esattamente il formato della data che desidero impostare magicamente quando si utilizza il seguente codice.Formato della trama delle modifiche della barra di Pandas
df_ts = df.resample("W", how='max')
df_ts.plot(figsize=(12,8), stacked=True)
Tuttavia, le date misteriosamente si trasformano in un formato brutto e illeggibile quando si rappresentano gli stessi dati come un grafico a barre.
df_ts = df.resample("W", how='max')
df_ts.plot(kind='bar', figsize=(12,8), stacked=True)
I dati originali è stata trasformata un po 'per avere il massimo settimanale. Perché questo cambiamento radicale nell'impostazione automatica delle date sta accadendo? Come posso avere le date ben formattate come sopra?
Ecco alcuni dati fittizi
start = pd.to_datetime("1-1-2012")
idx = pd.date_range(start, periods= 365).tolist()
df=pd.DataFrame({'A':np.random.random(365), 'B':np.random.random(365)})
df.index = idx
df_ts = df.resample('W', how= 'max')
df_ts.plot(kind='bar', stacked=True)
@unutbu perché le date iniziano a gennaio 1970?Ho un problema molto simile (formattazione xtick del grafico a barre di panda) e quando provo a usare il tuo codice, le date iniziano a gennaio 1970 indipendentemente dalle date effettive. La mia domanda è su: http://stackoverflow.com/questions/33642388/pandas-bar-plot-with-multiindex-dataframe – marillion
@marillion: Grazie per aver segnalato questo errore. Dopo aver studiato ulteriormente il codice Pandas/matplotlib sottostante, ritengo che il modo più semplice per personalizzare il tick plot di barare sia farlo in modo esplicito usando 'set_major_formatter' con un' FixedFormatter'. – unutbu
utilizzare meglio il passo in base alla lunghezza 'show = 6; step = int (len (df_ts.index)/show) 'then ogni passo ticklable mostra mese, giorno e anno ' ticklabels [:: step] = [item.strftime ('% b% d \ n% Y') per l'elemento in '' df_ts.index [:: fase]] ' – jrovegno