大家好,本文将围绕基于python的图表生成系统展开说明,python如何生成excel图表是一个很多人都想弄明白的事情,想搞清楚python操作excel生成图表需要先了解以下几个事情。
本篇文章给大家谈谈python如何生成excel图表,以及python图形界面生成exe,希望对各位有所帮助,不要忘了收藏本站喔。
案例01 制作柱形图展示数据的对比关系——员工销售业绩统计表.xlsx
import xlwings as xw
app = xw.App(visible=True, add_book=False)
workbook = app.books.open('员工销售业绩统计表.xlsx') # 打开要制作图表的工作簿
for i in workbook.sheets: # 遍历工作簿中的工作表
chart = i.charts.add(left=200, top=0, width=355, height=211) # 设置图表的位置和尺寸
chart.set_source_data(i['A1'].expand()) # 读取工作表中要制作图表的数据
chart.chart_type = 'column_clustered' # 制作柱形图
workbook.save('柱形图.xlsx')
workbook.close()
app.quit()
运行结果打开柱形图.xlsx即可查看
用特定含义的字符串来指定图表类型,常用图表类型对应的字符串如下:
图表类型 字符串 图表类型 字符串 柱形图 ‘column_clustered' 饼图 'pie'
条形图 'bar_clustered' 圆环图 ‘doughnut’ 折线图 ‘line’ 散点图 ‘xy_scatter' 面积图 ’area‘ 雷达图 ’radar‘
批量制作条形图
import xlwings as xw
app = xw.App(visible = True, add_book = False)
workbook = app.books.open('员工销售业绩统计表.xlsx')
for i in workbook.sheets:
chart = i.charts.add(left = 200, top = 0, width = 355, height = 211)
chart.set_source_data(i['A1'].expand('table'))
chart.chart_type = 'bar_clustered' # 制作条形图
workbook.save('条形图.xlsx')
workbook.close()
app.quit()
案例02 制作折线图展示数据的变化趋势——月销售表.xlsx
import pandas as pd
import matplotlib.pyplot as plt
import xlwings as xw
df = pd.read_excel('月销售表.xlsx')
figure = plt.figure()
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = df['月份']
y = df['销售额']
plt.plot(x, y, color = 'red', linewidth = '3', linestyle = 'solid') # 制作折线图
plt.title(label = '月销售额趋势图', fontdict = {'color' : 'black', 'size' : 30}, loc = 'center') # 添加并设置图表标题
for a,b in zip(x,y): # 遍历折线图表标题
plt.text(a, b + 0.2, (a, '%.0f' % b), ha = 'center', va = 'bottom', fontsize = 10) # 添加并设置数据标签
plt.axis('off') # 隐藏坐标轴
app = xw.App(visible = False) # 启动Excel程序
workbook = app.books.open('月销售表.xlsx') # 打开要插入图表的工作簿
worksheet = workbook.sheets['Sheet1'] #选中工作表”Sheet1“
worksheet.pictures.add(figure, name = '图片1', update = True, left = 200) # 在工作表中插入制作的折线图
workbook.save('折线图.xlsx')
workbook.close()
app.quit()
运行结果:
axis()函数的参数值为’off’时表示不显示图表坐标轴,为‘on'时表示显示图表坐标轴
制作折线图并为最高点添加数据标签
import pandas as pd
import matplotlib.pyplot as plt
import xlwings as xw
df = pd.read_excel('月销售表.xlsx')
figure = plt.figure()
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = df['月份']
y = df['销售额']
plt.plot(x, y, color = 'red', linewidth = '3', linestyle = 'solid') # 制作折线图
plt.title(label = '月销售额趋势图', fontdict = {'color' : 'black', 'size' : 30}, loc = 'center') # 添加并设置图表标题
max1 = df['销售额'].max() # 获取最高销售额
df_max = df[df['销售额']== max1] # 选取最高销售额对应的行数据
for a,b in zip(df_max['月份'],df_max['销售额']): # 遍历折线图表标题
plt.text(a, b + 0.05, (a, '%.0f' % b), ha = 'center