2016-07-31 22 views
9

Sagen, ich habe Daten in folgendem Format:Python Pandas: Wie Dataframe Spalt Wert setzen als X-Achse Etikett

Region Men Women 
City1 10 5 
City2 50 89 

Als ich es in Datenrahmen und Plot-Diagramm laden, zeigt es Index als X-Achsenbeschriftungen anstelle von Region Name. Wie bekomme ich Namen auf der X-Achse?

Bisher habe ich versucht:

import pandas as pd 
import matplotlib.pyplot as plt  
plt.style.use('ggplot') 
ax = df[['Men','Women']].plot(kind='bar', title ="Population",figsize=(15,10),legend=True, fontsize=12) 
ax.set_xlabel("Areas",fontsize=12) 
ax.set_ylabel("Population",fontsize=12) 
plt.show() 

Derzeit zeigt es x Zecken als 0,1,2..

+1

['plt.xticks()'] (http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.xticks) [(Beispiel)] (http://matplotlib.org/examples/ticks_and_spines /ticklabels_demo_rotation.html) oder ['ax.set_xticklabels()'] (http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.set_xticklabels) könnte es sich lohnen, nachzusehen (für beide verlinkte Dokumente). Es gibt auch den 'xticks'-Parameter, den Sie zu [' DataFrame.plot() '] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.plot) angeben können.html) – jedwards

+0

@jedwards 'set.xticklabels()' gearbeitet, aber es ist seltsam zeigt Zeichenfolge vertikal statt horizontal. – Volatil3

+0

Wie werden die Etiketten gedreht? Mit anderen Worten, um sie "richtig" zu lesen, müssten Sie Ihren Kopf drehen? Oder das Etikett ist sehr schmal und jeder Buchstabe oder zwei steht auf einer neuen Zeile. – jedwards

Antwort

6

Da Sie Pandas verwenden, es sieht aus wie Sie können die Hilfsstrichsbeschriftungen direkt an die Methode plot() des DataFrame übergeben. (docs). (z. B. df.plot(..., xticks=<your labels>))

Darüber hinaus, da Pandas Matplotlib verwendet, können Sie die Etiketten auf diese Weise steuern.

Zum Beispiel mit plt.xticks()(example) oder ax.set_xticklabels()

die Rotation Bezüglich erlauben die letzten beiden Methoden, die Sie zusammen mit den Etiketten eine Drehung Argument zu übergeben. So etwas wie:

ax.set_xticklabels(<your labels>, rotation=0) 

sollte sie zwingen, horizontal zu legen.

4

plot.bar() Methode ihre Argumente von plot() erbt, was rot Argument hat:

aus der Dokumentation:

rot: int, default None

Rotation auf Zecken (xticks für vertikale, yticks für horizontale Plots)

es verwendet auch pro Standardindex wie für X-Achse Zecken:

use_index: Boolean, Standard True

Index als Ticks für x-Achse verwenden

In [34]: df.plot.bar(x='Region', rot=0, title='Population', figsize=(15,10), fontsize=12) 
Out[34]: <matplotlib.axes._subplots.AxesSubplot at 0xd09ff28> 

alternativ können Sie Index explizit festgelegt - es könnte für Multi-Level-Indizes (Achsen) nützlich sein:

df.set_index('Region').plot.bar(rot=0, title='Population', figsize=(15,10), fontsize=12) 

enter image description here