目录
案例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