绘制表格(统计.excel)柱状图,每一张表格绘制一张图片
- 导入需要的包
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
- 读取excel文件
path = r"C:\Users\dell\Desktop\编辑\统计.xlsx" #文件地址
data = pd.read_excel(path, None) # 读取数据,设置None可以生成一个字典,字典中的key值即为sheet名字,若sheet_name='Sheet2'则只读取一个表
- 画图函数
def f(L1,L2,L3,L4,L5,L6,L7,title,x,name):
plt.rcParams['font.sans-serif'] = ['Times New Roman'] # 用来正常显示中文标签,新罗马字体
plt.rcParams["axes.unicode_minus"] = False
plt.title(title) #表名
plt.xlabel("Dataset")#x轴名
plt.ylabel(x)#y轴名
labels = ["Nongjing", "Nongzi", "TaoJindi", "CNZJ"]#x轴坐标
x = np.arange(len(labels)) # x轴刻度标签位置
width = 0.1 # 柱子的宽度
#表的效果是分四个数据集,每个数据集上其中方法的准确率
plt.bar(x - 1.5 * width, L1, width, label='Jieba')
plt.bar(x - 0.5 * width, L2, width, label='HanLP')
plt.bar(x + 0.5 * width, L3, width, label='PKUSEG')
plt.bar(x + 1.5 * width, L4, width, label='Snownlp')
plt.bar(x + 2.5 * width, L5, width, label='NLPIR')
plt.bar(x + 3.5 * width, L6, width, label='Thulac')
plt.bar(x + 4.5 * width, L7, width, label='LTP')
plt.xticks(x, labels=labels)
plt.legend(loc='lower left', bbox_to_anchor=(1, 0.2), fontsize=9.5, frameon=0, borderpad=0, columnspacing=0.1,
handlelength=0.4)
plt.savefig('./images/name', dpi=500, bbox_inches='tight')#dpi表示高清存储,bbox_inches表示自适应画布,白边不会太大
plt.show()
4.对表格数据处理成需要的列表格式
print(data.keys())
for sh_name in data.keys() :
F1 = []
F2 = []
F3 = []
F4 = []
F5 = []
F6 = []
F7 = []
if(sh_name=="transformer"):
print(sh_name)
df=pd.DataFrame(pd.read_excel(path,sheet_name=sh_name))
p=df['precision']
# print(p)
F1.extend([p[0],p[1],p[2],p[3]])
F2.extend([p[4],p[5],p[6],p[7]])
F3.extend([p[8],p[9],p[10],p[11]])
F4.extend([p[12],p[13],p[14],p[15]])
F5.extend([p[16],p[17],p[18],p[19]])
F6.extend([p[20],p[21],p[22],p[23]])
F7.extend([p[24], p[25],p[26],p[27]])
print(F1)
print(F2)
print(F3)
print(F4)
print(F5)
print(F6)
print(F7)
f(F1,F2,F3,F4,F5,F6,F7,sh_name+"-precision","precision",sh_name+"-precision")