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 折线的颜色。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文库