Python让Excel飞起来—批量制作常用图表

目录

案例01 制作柱形图展示数据的对比关系

举一反三 批量制作条形图

案例02 制作折线图展示数据变化趋势

 举一反三 制作折线图并为最高点添加数据标签

举一反三 制作平滑折线图

案例03 制作散点图判断两组数据的相关性

​举一反三 为散点图添加线性趋势线

举一反三 制作气泡图

案例04 制作饼图展示部分和总体的比例关系

举一反三 制作圆环图

案例05 制作雷达图对比多项指标

举一反三 制作某一品牌性能评价指标雷达图

案例06 制作温度计图展示工作进度

举一反三 制作上半年销售业绩的温度计图


案例01 制作柱形图展示数据的对比关系

  • 代码文件:制作柱形图展示数据的对比关系.py
  • 数据文件:员工销售业绩统计表.xlsx

实现代码:

import xlwings as xw
app=xw.App(visible=True,add_book=False)
workbook=app.books.open(r'C:\Users\Administrator\Desktop\22\员工销售业绩统计表.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(r'C:\Users\Administrator\Desktop\22\柱形图.xlsx')
workbook.close()
app.quit()
知识延伸
7行代码中用特定含义的字符串来指定图表类型,常用图表类型对应的字符串见下表

举一反三 批量制作条形图

  • 代码文件:批量制作条形图.py
  • 数据文件:员工销售业绩统计表.xlsx
如果想要为工作簿中的所有工作表制作条形图,可以通过以下代码来实现。
import xlwings as xw
app=xw.App(visible=True,add_book=False)
workbook=app.books.open(r'C:\Users\Administrator\Desktop\22\员工销售业绩统计表.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='bar_clustered'  #制作条形图
workbook.save(r'C:\Users\Administrator\Desktop\22\条形图.xlsx')
workbook.close()
app.quit()

案例02 制作折线图展示数据变化趋势

  • 代码文件:制作折线图展示数据变化趋势.py
  • 数据文件:月销售表.xlsx
虽然 xlwings模块也能制作图表,但要像下图那样添加标题和数据标签,就不如 Matplotlib 模块方便了。

实现代码:

import warnings
warnings.filterwarnings("ignore")
import xlwings as xw
import pandas as pd
import matplotlib.pyplot as plt 
app=xw.App(visible=True,add_book=False)
df=pd.read_excel(r'C:\Users\Administrator\Desktop\22\月销售表.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('月销售额趋势图',fontdict={'color':'black','size':20},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')  #隐藏坐标轴

workbook=app.books.open(r'C:\Users\Administrator\Desktop\22\月销售表.xlsx')
worksheet=workbook.sheets['sheet1']  #选中工作表‘sheet1’
worksheet.pictures.add(figure,name='图片1',update=True,left=200)
workbook.save(r'C:\Users\Administrator\Desktop\22\月销售表折线图.xlsx')
workbook.close()
app.quit()

 举一反三 制作折线图并为最高点添加数据标签

  • 代码文件:制作折线图并为最高点添加数据标签.py
  • 数据文件:月销售表.xlsx
在前面制作的折线图中,为每个数据点都添加了数据标签来展示各月的销售额,如果只想展示最高销售额的值,可以通过以下代码为最高点添加数据标签。(df_max['月份'],df_max['销售额'])

import warnings
warnings.filterwarnings("ignore")
import xlwings as xw
import pandas as pd
import matplotlib.pyplot as plt 
app=xw.App(visible=True,add_book=False)
df=pd.read_excel(r'C:\Users\Administrator\Desktop\22\月销售表.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('月销售额趋势图',fontdict={'color':'black','size':20},loc='center')  #添加并设置图标标题

max1=df['销售额'].max()  #获取最高点
df_max=df[df['销售额']==max1]  #选取最高销售点对应的行数据
for a,b in zip(df_max['月份'],df_max['销售额']):
    plt.text(a,b+0.2,(a,'%.0f'%b),ha='center',va='bottom',fontsize=10)   #添加并设置数据标签
plt.axis('off')  #隐藏坐标轴

workbook=app.books.open(r'C:\Users\Administrator\Desktop\22\月销售表.xlsx')
worksheet=workbook.sheets['sheet1']  #选中工作表‘sheet1’
worksheet.pictures.add(figure,name='图片1',update=True,left=200)
workbook.save(r'C:\Users\Administrator\Desktop\22\月销售表折线图最高点.xlsx')
workbook.close()
app.quit()

举一反三 制作平滑折线图

  • 代码文件:制作平滑折线图.py
  • 数据文件:月销售表.xlsx
如果想要制作平滑的折线图,可以通过以下代码来实现。
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate  #插值函数
import xlwings as xw
df=pd.read_excel(r'C:\Users\Administrator\Desktop\22\月销售表.xlsx')

figure=pl
  • 7
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值