目录
案例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['销售额'])
![](https://img-blog.csdnimg.cn/70037de24a1f4ba1a68dca73e3f6c097.png)
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=plt.figure()
|