需求:将汇总的数据生成柱状图
#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()前面,会导致保存的图片是个空白的.