赞
踩
大家好,给大家分享一下python如何生成excel图表,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!
- import matplotlib.pyplot as plt # 导入matplotlib模块
- x = [1, 2, 3, 4, 5, 6] # 给出x坐标的数据
- y = [2, 4, 6, 8, 10, 12] # 给出y坐标的数据
- plt.plot(x, y, color = 'red', linewidth = 3, linestyle = 'solid') # 绘制折线图
- plt.show() # 显示绘制的图表
运行结果:
知识延伸
1、plot()是Matplotlib模块的函数,用于绘制折线图。
语法格式:
plot(x,y,color,linewidth,linestyle)
参数 说明 x x坐标的值 y y坐标的值 color 折线的颜色70个python练手项目列表。Matplotlib模块支持多种格式定义的颜色,常用的有
- 用颜色的单词或其简写定义的8种基础颜色
- 用RGB值的浮点数元组定义的颜色,RGB值通常是用0~255的十进制整数表示的
- 用RGB值的十六进制字符串定义的颜色,如‘#33FF00’,其与(51,255,0)是相同的RGB颜色,可以搜索“十六进制颜色码转换工具”来获取更多颜色
linewidth 折线的粗细 linestyle 折线的类型。用特定含义的字符串表示,如:实线用‘-’或‘solid’表示 2、show()是Matplotlib模块的函数,用于显示绘制的图表。
- import matplotlib.pyplot as plt
- x = [1, 2, 3, 4, 5, 6]
- y = [50, 60, 80, 78, 95, 70]
- plt.bar(x, y, width = 0.8, align = 'center', color = 'blue') # 绘制柱形图
- plt.show()
运行结果:
bar()就是Matplotlib模块中用于制作柱形图的函数。
语法格式:
bar(x,height,width=0.8,bottom=None,align='center',color,edgecolor,linewidth)
参数 说明 x x坐标的值 height y坐标的值,也就是每根柱子的高度 width 柱子的宽度,默认值为0.8 bottom 每根柱子的底部的y坐标值 align 柱子的位置与x坐标的关系。默认值为‘center’,表示柱子与x坐标居中对齐;如为‘edge’,表示柱子与x坐标左对齐 color 柱子的填充颜色 edgecolor 柱子的边框颜色 linewidth 柱子的边框粗细
- import matplotlib.pyplot as plt
- x = [1, 2, 3, 4]
- y = [60, 25, 78, 50]
- plt.barh(x, y, align = 'center', color = 'blue') # 绘制条形图
- plt.show()
运行结果:
barh()就是Matplotlib模块中用于绘制条形图的函数。
语法格式:
barh(y,width,height=0.8,left=None,align='center',color,edgecolor,linewidth)
参数 说明 y y坐标的值 width x坐标的值,也就是每根条形的宽度 height 条形的高度,默认值为0.8 left 每根条形的左侧边缘的x坐标值 align 条形的位置与y坐标的关系。默认值为‘center’,表示条形与y坐标居中对齐;如为‘edge’,表示条形的底部与y坐标对齐
color 条形的填充颜色 edgecolor 条形的边框颜色 linewidth 条形的边框粗细
- import matplotlib.pyplot as plt
- x = [25, 45, 69, 30, 80, 12]
- plt.pie(x) # 根据x坐标值绘制饼图
- plt.show()
运行结果:
- 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['月份'] # 指定“月份”列为x坐标的值
- y = df['销售额'] # 指定“销售额”列为y坐标的值
- plt.bar(x, y, color = 'black') # 制作柱形图
- app = xw.App(visible = False) # 启动Excel程序
- workbook = app.books.open('销售业绩表.xlsx') # 打开要插入图表的工作簿
- worksheet = workbook.sheets['销售业绩'] # 选中要插入图表的工作表
- worksheet.pictures.add(figure, left = 500) # 在工作表中插入柱形图
- workbook.save()
- workbook.close()
- app.quit()
运行结果:
知识延伸
SimHei是黑体的英文名称,如果想使用其他字体,可参考如下的常用字体名称中英文对照表
字体中文名称 字体英文名称 字体中文名称 字体英文名称 黑体 SimHei 仿宋 FangSong 微软雅黑 Microsoft YaHei 楷体 KaiTi 宋体 SimSun 细明体 MingLiU 新宋体 NSimSun 新细明体 PMingLiU
- 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.scatter(x, y, s = 500, color = 'red', marker = '*') # 制作散点图
- app = xw.App(visible = False)
- workbook = app.books.open('销售业绩表.xlsx')
- worksheet = workbook.sheets['销售业绩']
- worksheet.pictures.add(figure, left = 500)
- workbook.save()
- workbook.close()
- app.quit()
运行结果:
scatter()是Matplotlib模块中用于制作散点图的函数,参数marker用于设置散点图中每个点的形状。
- 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.stackplot(x, y, colors = 'red') # 制作面积图
- app = xw.App(visible = False)
- workbook = app.books.open('销售业绩表.xlsx')
- worksheet = workbook.sheets['销售业绩']
- worksheet.pictures.add(figure, left = 500)
- workbook.save()
- workbook.close()
- app.quit()
运行结果:
stackplot()是Matplotlib模块中用于制作面积图的函数。
语法格式:
stackplot(x,y,labels,colors)
参数 说明 x x坐标的值 y y坐标的值 labels 图表的图例名 colors 图表的颜色
- import pandas as pd
- import matplotlib.pyplot as plt
- df = pd.read_excel('销售业绩表1.xlsx')
- plt.rcParams['font.sans-serif'] = ['SimHei']
- plt.rcParams['axes.unicode_minus'] = False
- x = df['月份'] # 指定数据中的“月份”列为x坐标的值
- y1 = df['销售额'] # 指定数据中的“销售额”列为y坐标的第1组值
- y2 = df['利润'] # 指定数据中的“利润”列为y坐标的第2组值
- plt.plot(x, y1, color = 'black', linewidth = 4) # 用x坐标和第1组y坐标制作折线图
- plt.bar(x, y2, color = 'blue') # 用x坐标和第2组y坐标制作柱形图
- plt.show()
运行结果:
知识延伸
组合图表的制作和单个图表的制作方法基本相同,区别在于单个图表中的x和y坐标的值都只有一组,而组合图表的x坐标的值可能会被两组y坐标的值共用,或者y坐标的值会被两组x坐标的值共用。在制作组合图表时,只需要为图表设置两组x坐标值或两组y坐标值,然后制作两个图表即可。
- import pandas as pd
- import matplotlib.pyplot as plt
- df = pd.read_excel('销售业绩表1.xlsx')
- plt.rcParams['font.sans-serif'] = ['SimHei']
- plt.rcParams['axes.unicode_minus'] = False
- x1 = df['月份']
- y1 = df['销售额']
- y2 = df['利润']
- plt.plot(x1, y1, color = 'red', linewidth = 3, linestyle = 'solid')
- plt.plot(x1, y2, color = 'black', linewidth = 3, linestyle = 'solid')
- plt.show()
运行结果:
- import pandas as pd
- import matplotlib.pyplot as plt
- df = pd.read_excel('销售业绩表.xlsx')
- plt.rcParams['font.sans-serif'] = ['SimHei']
- plt.rcParams['axes.unicode_minus'] = False
- x = df['月份'] # 指定数据中的“月份”列为x坐标的值
- y = df['销售额'] # 指定数据中的”销售额“列为y坐标的值
- plt.bar(x, y, color = 'black') # 制作柱形图
- plt.title(label = '各月销售额对比图', fontdict = {'family' : 'KaiTi', 'color' : 'red', 'size' : 20}, loc = 'left') # 添加并设置图表标题
- plt.xlabel('月份', fontdict = {'family' : 'SimSun', 'color' : 'black', 'size' : 15}, labelpad = 10) # 添加并设置x轴标题
- plt.ylabel('销售额', fontdict = {'family' : 'SimSun', 'color' : 'black', 'size' : 15}, labelpad = 10) # 添加并设置y轴标题
- plt.show()
运行结果:
知识延伸
1、title()是Matplotlib模块中的函数,用于给图表添加和设置标题。
语法格式:
title(label,fontdict=None,loc='center',pad=None)
参数 说明 label 图表标题的文本内容 fontdict 图表标题的字体、字号和颜色等 loc 图表标题的显示位置。默认值为‘center’,表示在图表上方居中显示。还可以设置为‘left’或‘right’,表示在图表上方靠左或靠右显示 pad 图表标题到图表坐标系顶端的距离 2、xlabel()和ylabel()是Matplotlib模块中的函数,分别用于添加和设置x、y轴的标题。
语法格式:
xlabel/ylabel(label,fontdict=None,labelpad=None)
参数 说明 label 坐标轴标题的文本内容 fontdict 坐标轴标题的字体、字号和颜色等 labelpad 坐标轴标题到坐标轴的距离
- import pandas as pd
- import matplotlib.pyplot as plt
- df = pd.read_excel('销售业绩表.xlsx')
- plt.rcParams['font.sans-serif'] = ['SimHei']
- plt.rcParams['axes.unicode_minus'] = False
- x = df['月份']
- y = df['销售额']
- plt.bar(x, y, color = 'red', label = '销售额') # 制作柱形图并设置图例名
- plt.legend(loc = 'upper left', fontsize = 20) # 添加并设置图例
- plt.show()
运行结果:
legend()是Matplotlib模块中的函数,用于为图表添加并设置图例。
语法格式:
legend(loc,fontsize,facecolor,edgecolor,shadow=False)
参数 说明 loc 图例的显示位置。取值为特定的字符串,常用的有‘upper left’、‘upper right’、‘lower left’、‘lower right’,分别表示左上角、右上角、左下角、右下角 fontsize 图例名的字号 facecolor 图例框的背景颜色 edgecolor 图例框的边框颜色 shadow 是否给图例框添加阴影,默认值为False,表示不添加阴影
- import pandas as pd
- import matplotlib.pyplot as plt
- df = pd.read_excel('销售业绩表.xlsx')
- 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') # 制作折线图
- for a,b in zip(x, y):
- plt.text(a, b, b, fontdict = {'family' : 'KaiTi', 'color' : 'red', 'size': 20}) # 添加并设置数据标签
- plt.show()
运行结果:
知识延伸
1、zip()是python的内置函数,它以可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表。
语法格式:
zip([iterable,…])
iterable:指一个或多个可迭代的对象
2、text()是Matplotlib模块中的函数,用于为图标添加并设置数据标签。
语法格式:
text(x,y,s,fontdict=None)
参数 说明 x 数据标签的x坐标 y 数据标签的y坐标 s 数据标签的文本内容 fontdict 可选参数,用于设置数据标签的字体、字号、颜色等
- import pandas as pd
- import matplotlib.pyplot as plt
- df = pd.read_excel('销售业绩表.xlsx')
- 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.ylim(0, 1200000) # 设置y轴的取值范围
- for a,b in zip(x, y):
- plt.text(a, b, b, fontdict = {'family' : 'KaiTi', 'color' : 'red', 'size': 20})
- plt.show()
运行结果:
ylim()是Matplotlib模块中用于为图表设置y轴取值范围的函数。
语法格式:
ylim(num1,num2)
参数:
num1:y轴的最小值
num2:y轴的最大值
- import pandas as pd
- import matplotlib.pyplot as plt
- df = pd.read_excel('销售业绩表2.xlsx')
- plt.rcParams['font.sans-serif'] = ['SimHei']
- plt.rcParams['axes.unicode_minus'] = False
- x = df['月份'] # 指定数据中的”月份“列为坐标的值
- y1 = df['销售额'] # 指定数据中的”销售额“列为y坐标的第1组值
- y2 = df['同比增长'] # 指定数据中的”同比增长“列为y坐标的第2组值
- plt.bar(x, y1, color = 'grey', label = '销售额') # 制作柱形图
- plt.legend(loc = 'upper left', fontsize = 20) # 为柱形图添加和设置图例
- plt.twinx() # 为图表设置双坐标轴
- plt.plot(x, y2, color = 'black', linewidth = 3, label = '同比增长') # 制作折线图
- plt.legend(loc = 'upper right', fontsize = 20) # 为折线图添加和设置图例
- plt.show()
运行结果:
twinx()是Matplotlib模块中的函数,用于为图表设置双坐标轴。该函数没有参数,可直接使用。
- import pandas as pd
- import matplotlib.pyplot as plt
- df = pd.read_excel('销售业绩表.xlsx')
- plt.rcParams['font.sans-serif'] = ['SimHei']
- plt.rcParams['axes.unicode_minus'] = False
- x = df['月份']
- y = df['销售额']
- plt.plot(x, y, color = 'black', linewidth = 3, linestyle = 'solid')
- plt.grid(b = True, axis = 'y', color = 'red', linestyle = 'dashed', linewidth = 1) # 为y轴添加并设置网格线
- plt.show()
运行结果:
grid()是Matplotlib模块中的函数,用于为图表添加并设置网格线。
语法格式:
grid(b,which,axis,color,linestyle,linewidth)
参数 说明 b 如果为True,表示显示网格线;如果为False,表示不显示网格线 which 要设置哪种类型的网格线。取值为‘major’、‘minor’、‘both’,分别表示只设置主要网格线、只设置次要网格线、两者都设置 axis 要设置哪个轴的网格线。取值为‘x‘,’y‘,’both',分别表示只设置x轴的网格线、只设置y轴的网格线、两者都设置 color 网格线的颜色 linestyle 网格线的线型 linewidth 网格线的粗细
使用Python制作简单的图表并设置图表元素,这些案例中使用到的数据文件请点击这里 【免费】使用Python制作简单的图表并设置图表元素所用到的数据.zip资源-CSDN文库
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。