数据生成柱状图

时间:2022-05-30 11:55:20

需求:将汇总的数据生成柱状图

#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()前面,会导致保存的图片是个空白的.