python - 使用 Matplotlib 和 Pandas 时重命名 X 轴标签

标签 python pandas matplotlib

我在 iPython Notebooks 和 Macbook Pro Yosemite 10.10.4 上运行我的代码

我有一个 CSV 文件,我正在尝试使用 Python 读取该文件,并希望提供图表。我面临的问题是重命名 X 轴标签。

本质上,该图表试图绘制不同类型的审计违规的计数,但对所述违规的描述非常长。例如:

  • 未经区域委员会批准......另外 300 字 - 17
  • 与供应商没有契约(Contract)......另外 300 字 - 14
  • 供应商注册未记录......另外 300 字 - 9

不过,我不想将这些冗长的原因重命名为 X 轴标签,只使用数字或字母,以便图表读起来有点像这样:

  • A - 17
  • B - 14
  • C - 9

这是我使用的代码,除了标签名称之外,我对结果很满意。

%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np 
import pylab as pl
pd.set_option('display.mpl_style', 'default') 
pd.set_option('display.width', 5000) 
pd.set_option('display.max_columns', 60)
plt.rcParams['figure.figsize'] = (15, 5)
fixed_data = pd.read_csv('audit-rep.csv',sep=',',encoding='latin1',index_col='Index', parse_dates=['Report Date'],dayfirst=False)

viol_counts = data['Audit Flag'].value_counts()
viol_counts[:10]
viol_counts[:10].plot(kind='bar')

我尝试使用下面的代码重命名 x 轴标签。

 viol_counts.set_ylabel('No. of Violations')
 viol_counts.set_title('Audit Results')
 viol_counts.set_xticks(ind+width)
 viol_counts.set_xticklabels( ('A', 'B','C') )

这是我使用上述代码时遇到的错误。

AttributeError: 'Series' object has no attribute 'set_ylabel'

我遇到过一些与此问题相关的其他帖子,但没有看到专门解决单个标签重命名问题的帖子。 但这并不是完全重要,我只是想学习使用 python,实际工作已经在 excel 中完成。

最佳答案

如果您将绘图 Axes 对象分配给变量名称(这里我将其称为 viol_plot),那么您可以对该 Axes< 执行操作 对象(您当前正在尝试设置 Series 上的标签和刻度,而不是绘图):

viol_plot = viol_counts[:10].plot(kind='bar')

viol_plot.set_ylabel('No. of Violations')
viol_plot.set_title('Audit Results')
viol_plot.set_xticks(ind+width)
viol_plot.set_xticklabels( ('A', 'B','C') )

关于python - 使用 Matplotlib 和 Pandas 时重命名 X 轴标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31536202/

相关文章:

python - 如何使用keras打印神经网络中预测类的名称?

python - 如何为我的 python 项目制作包

python - ipython笔记本中的"import matplotlib.pyplot as plt"

python - Axes3D.text() 注释 3D 散点图

python - 如何在 matplotlib 中创建同一条线有两种不同颜色的折线图?

python - spyne - 在服务定义中使用默认参数

python - 为什么在写入 csv 时 Pandas 会删除前导零?

Python Pandas : extract date and time from timestamp

Python Pandas : appending information to row while looping through dataframe

Python 子图