首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Matplotlib和Pandas重命名X轴标签

使用Matplotlib和Pandas重命名X轴标签
EN

Stack Overflow用户
提问于 2015-07-21 10:13:19
回答 2查看 21.3K关注 0票数 3

我在iPython笔记本上运行我的代码,在Macbook Pro Yosemite 10.4上运行

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

从本质上说,该图表试图对不同类型的审计违规行为进行统计,但对上述违规行为有很长的描述。例如:

  • 未获区域committee.......another 300字批准- 17
  • 没有与vendor.......another 300字合同- 14
  • 供应商注册不在record.......another 300字-9

不过,我不想有这些冗长的理由,而是将X-Axis标签重命名为数字或字母表,使图形读起来有点像这样:

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

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

代码语言:javascript
复制
%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轴标签。

代码语言:javascript
复制
 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:“串联”对象没有属性“set_ylabel”

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-21 12:49:36

如果将绘图Axes对象赋值给变量名称(这里我称之为viol_plot),那么您可以对该Axes对象执行操作(您目前正在尝试设置Series上的标签和滴答,而不是该绘图):

代码语言:javascript
复制
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') )
票数 6
EN

Stack Overflow用户

发布于 2015-07-21 12:36:14

set_ylabel、set_title等方法用于绘图对象。一种选择是使用子图:

代码语言:javascript
复制
figure, ax = pl.subplots(1,1)
#note the ax option.
viol_counts[:10].plot(kind='bar', ax=ax)
ax.set_ylabel('No. of Violations')
ax.set_title('Audit Results')
ax.set_xticks(ind+width)
ax.set_xticklabels( ('A', 'B','C') )

或者,您只需绘制并使用不同的功能。一个缺点是,在这种情况下,我不知道如何设置xticklabels:

代码语言:javascript
复制
viol_counts[:10].plot(kind='bar')
#note names of functions are slightly different
pl.ylabel('No. of Violations')
pl.title('Audit Results')
pl.xticks(ind+width)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31536202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档