需求:将汇总的数据生成柱状图
#coding:utf-8
import xlrd
import xlwt
def all_list(arr):
"""获取所有元素的出现次数,使用list中的count方法"""
result = {}
for i in set(arr):
result[i] = arr.count(i)
return result
workbook=xlrd.open_workbook("d://jira_info//xiangdong_ceshi.xls")
sheets=workbook.sheet_by_index(0)
sheet_rows=sheets.nrows #行数
"解析表头,找到问题类型/经办人/优先级对应的列"
sheet_cols=sheets.ncols
for col in range(sheet_cols):
col_value=sheets.cell(0,col).value
# print type(col_value)
if u'问题类型'==col_value:
q_type=col
elif u'报告人'==col_value:
q_person=col
elif u'优先级'==col_value:
q_rank=col
persons=[] #开发人员列表
for i in range(1,sheet_rows):
"取出需要的值"
persons.append(sheets.cell(i,q_person).value)
personss=list(set(persons)) #筛选出的报告人
dds=[] #报告人对应的问题数
for pp in personss:
dds.append(persons.count(pp)) #报告人出现几次就是提交了几个问题
import matplotlib.pyplot as plt
import matplotlib
#指定默认字体
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['font.family']='sans-serif'
#解决负号'-'显示为方块的问题
matplotlib.rcParams['axes.unicode_minus'] = False
print personss
plt.bar(range(len(personss)), dds,color='rgb',tick_label=personss)
plt.title(u'erp开发')
for i in range(len(dds)):
plt.text(i,dds[i],dds[i]) #柱子上面显示数值
plt.show()
plt.savefig('ex.png')
注意的问题:1 中文的问题,需要加入字体设置
2 图片保存,如果保存图片的动作在plt.show()前面,会导致保存的图片是个空白的.