Python Pandas:如何将Dataframe Column值设置为X轴标签

Vol*_*il3 18 python matplotlib dataframe pandas

假设我有以下格式的数据:

Region   Men   Women
City1    10   5
City2    50   89
Run Code Online (Sandbox Code Playgroud)

当我在Dataframe和plot graph中加载它时,它将索引显示为X轴标签而不是Region名称.如何在X轴上获取名称?

到目前为止我试过:

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()
Run Code Online (Sandbox Code Playgroud)

目前它显示x刻度为 0,1,2..

jed*_*rds 12

由于你正在使用pandas,看起来你可以将tick标签直接传递给DataFrame的plot()方法.(docs).(例如df.plot(..., xticks=<your labels>))

此外,由于pandas使用matplotlib,您可以通过这种方式控制标签.

例如(例)或plt.xticks() ax.set_xticklabels()

关于旋转,最后两种方法允许您将旋转参数与标签一起传递.所以类似于:

ax.set_xticklabels(<your labels>, rotation=0)
Run Code Online (Sandbox Code Playgroud)

应该强迫它们水平放置.


Max*_*axU 9

plot.bar()方法从plot()继承其参数,plot()具有rot参数:

来自文档:

rot:int,默认无

旋转刻度(垂直刻度,水平刻度的刻度)

它还使用每个默认索引作为x轴的刻度:

use_index:布尔值,默认为True

使用index作为x轴的刻度

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

或者您可以显式设置索引 - 它可能对多级索引(轴)有用:

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

在此输入图像描述