pyplot模块的基本用法
前言
Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形(来自:百度百科)。pyplot 模块是 Matplotlib 模块提供的快速绘图模块,它模仿了 MATLAB 的部分功能。在本文中主要介绍 pyplot 模块的基本用法,会进行持续的更新,欢迎各位读者朋友点赞收藏。
正文
1、导入pyplot模块
import matplotlib.pyplot as plt # 导入pyplot模块
2、plt.plot()方法绘制图像
-
传入一个参数绘制图像
import matplotlib.pyplot as pltplt.plot([1, 3, 4, 6]) # 如果只传入一个数组作为参数, matplotlib 认为是 Y 轴的坐标plt.show()
注意:- 如果只传入一个数组作为参数, Matplotlib 认为是 Y 轴的坐标并自动生成 x 值。 由于 Python 范围从 0 开始,默认 x 向量具有与 y 相同的长度,但从 0 开始。因此 x 数据是 [0,1,2,3]。
- plt.show() 函数:默认情况下,matplotlib.pyplot 不会直接显示图像,只有调用 plt.show() 函数时,图像才会显示出来,类似 print() 函数。plt.show() 默认是在新窗口打开一幅图像,并且提供了对图像进行操作的按钮。
-
传入两个参数绘制图像
import matplotlib.pyplot as pltplt.plot([1, 3, 4, 6], [2, 5, 10, 12])plt.show()
-
plt.plot() 参数设置
-
设置线条颜色:
color = ' '
或c = ' '
import matplotlib.pyplot as pltplt.plot([1, 3, 4, 6], [2, 5, 10, 12],c='black') # 设置线条颜色为黑色plt.show()
Matplotlib 支持的颜色缩写:字符 字符 ‘b’ 蓝色 ‘c’ 青色 ‘k’ 黑色 ‘g’ 绿色 ‘m’ 洋红 ‘w’ 白色 ‘r’ 红色 ‘y’ 黄色 -
设置线条风格:
linestyle = ' '
或ls = ' '
import matplotlib.pyplot as pltplt.plot([1, 3, 4, 6], [2, 5, 10, 12],ls='--') # 设置线条风格为虚线plt.show()
Matplotlib 支持的控制线条样式格式字符串:
字符 描述 字符 描述 ‘-’ 实线 ‘–’ 虚线 ‘-.’ 点划线 ‘:’ 点虚线 ‘.’ 点 ‘,’ 像素 ‘o’ 圆圈 ‘v’ 下三角 ‘^’ 上三角 ‘<’ 左三角 ‘>’ 右三角 ‘1’ 1 加下三角 ‘2’ 1加上三角 ‘3’ 1 加左三角 ‘4’ 1加右三角 ‘s’ 正方形 ‘p’ 五边形 ‘*’ 星形 ‘h’ 六角形1 ‘H’ 六角形2 ‘+’ 加号 ‘x’ 乘号 ‘D’ 钻石 ‘d’ 菱形 -
设置线条宽度:
linewidth= ' '
或lw= ' '
import matplotlib.pyplot as pltplt.plot([1, 3, 4, 6], [2, 5, 10, 12],lw=3) # 设置线条宽度为3plt.show()
-
设置线条透明度:
alpha=0.5
0-1范围内的浮点数import matplotlib.pyplot as pltplt.plot([1, 3, 4, 6], [2, 5, 10, 12],alpha=0.2) # 设置线条透明度为0.2plt.show()
-
3、plt.plot()方法添加描述信息
-
添加图片标题:
plt.title("")
-
添加轴标签:
plt.xlabel('')
&plt.ylabel('')
-
设置显示中文字符:Matplotlib 的缺省字体不支持中文,所以要指定一个支持中文的字体
plt.rcParams['font.sans-serif']=['Microsoft Yahei'] # 设定字体为微软雅黑
属性值 说明 SimHei 中文黑体 Kaiti 中文楷体 Lisu 中文隶书 FangSong 中文仿宋 YouYuan 中文幼圆 STSong 华文宋体 import matplotlib.pyplot as pltplt.title("折线图") # 设定图片标题plt.ylabel('Y轴') # 设置Y轴标签plt.xlabel('Time') # 设置X轴标签plt.rcParams['font.sans-serif'] = ['Microsoft Yahei'] # 设定字体为微软雅黑plt.plot([1, 3, 4, 6], [2, 5, 10, 12], alpha=1)plt.show()
如果不设置中文字符:
运行时也会有 Warning 提示:UserWarning: Glyph 36724 (\N{CJK UNIFIED IDEOGRAPH-8F74}) missing from current font.
4、plt.lim()方法设置坐标轴取值范围
-
设置横坐标轴取值范围:
plt.xlim(xmin=1, xmax=10)
-
设置纵坐标轴取值范围:
plt.ylim(ymin=2, ymax=15)
import matplotlib.pyplot as pltplt.title("折线图") # 设定字体为微软雅黑plt.ylabel('Y轴') # 设置Y轴标签plt.xlabel('Time') # 设置X轴标签plt.xlim(xmin=1, xmax=10)plt.ylim(ymin=2, ymax=15)plt.rcParams['font.sans-serif'] = ['Microsoft Yahei']plt.plot([1, 3, 4, 6], [2, 5, 10, 12], alpha=1)plt.show()
5、plt.ticks()方法设置坐标轴刻度范围
- 设置横坐标轴刻度范围:
plt.xticks(ticks, labels, rotation=90, fontsize=12)
- 设置纵坐标轴刻度范围:
plt.yticks(ticks, labels, rotation=90, fontsize=12)
参数介绍:
1. ticks 是一个 list,对应的是轴刻度,可以是小数可以是整数,ticks 不指定的位置不显示刻度;
2. labels 是一个 list,长度和 ticks 相等,内容是想要在对应刻度显示的内容;
3. rotation 是刻度内容旋转角度;plt.xticks(rotation=-90)
,使刻度文字与x轴垂直
4. fontsize 设置刻度值的字体大小。import matplotlib.pyplot as pltplt.title("折线图") # 设定字体为微软雅黑plt.ylabel('Y轴') # 设置Y轴标签plt.xlabel('Time') # 设置X轴标签plt.xlim(xmin=1, xmax=10)plt.ylim(ymin=2, ymax=15)plt.rcParams['font.sans-serif'] = ['Microsoft Yahei'] # 设置显示中文字体plt.xticks(list(range(1, 15,2)),rotation=0, fontsize=12) # 调整刻度范围和刻度标签plt.plot([1, 3, 4, 6], [2, 5, 10, 12], alpha=1)plt.show()
6、plt.grid()方法绘制网格线
绘制网格线:plt.grid(alpha=0.4)
,可以指定网格线的透明度。
import matplotlib.pyplot as pltplt.title("折线图") # 设定字体为微软雅黑plt.ylabel('Y轴') # 设置Y轴标签plt.xlabel('Time') # 设置X轴标签plt.xlim(xmin=1, xmax=10) # 设置x轴范围plt.ylim(ymin=2, ymax=15) # 设置y轴范围plt.rcParams['font.sans-serif'] = ['Microsoft Yahei']plt.xticks(list(range(1, 15, 2)), rotation=0, fontsize=12) # 调整x轴刻度范围plt.plot([1, 3, 4, 6], [2, 5, 10, 12], alpha=1)plt.grid(alpha=0.4) # 绘制网格,透明度为0.4plt.show()
7、plt.axhline()方法绘制平行于坐标轴的水平参考线
绘制平行于 x 轴的水平参考线axhline():plt.axhline(y, c, ls, lw, label)
绘制平行于 y 轴的水平参考线axvline():plt.axvline(x, c, ls, lw, label)
参数介绍:
- x&y:x&y轴的坐标;
- c:参考线的颜色;
- ls:参考线的风格;
- lw:参考线的宽度;
- label:参考线的名称。
import matplotlib.pyplot as pltplt.title("折线图") # 设定字体为微软雅黑plt.ylabel('Y轴') # 设置Y轴标签plt.xlabel('Time') # 设置X轴标签plt.xlim(xmin=1, xmax=10) # 设置x轴范围plt.ylim(ymin=2, ymax=15) # 设置y轴范围plt.rcParams['font.sans-serif'] = ['Microsoft Yahei']plt.xticks(list(range(1, 15, 2)), rotation=0, fontsize=12) # 调整x轴刻度范围plt.plot([1, 3, 4, 6], [2, 5, 10, 12], alpha=1)plt.grid(alpha=0.4) # 绘制网格,透明度为0.4plt.axhline(5, color='green', lw=2, label="分割线") # 绘制平行于x轴的水平参考线,绿色,名称为分割线plt.show()
8、plt.axvspan()方法绘制垂直于坐标轴的参考区域
绘制垂直于 x 轴的参考区域:plt.axvspan( xmin, xmax ,facecolor, alpha)
绘制垂直于 y 轴的参考区域:plt.axhspan( ymin, ymax ,facecolor, alpha)
参数介绍:
- xmin&ymin:参考区域的起始位置;
- xmax&ymax:参考区域的终止位置;
- facecolor:参考区域的填充颜色;
- alpha:参考区域填充颜色的透明度,[0~1]。
import matplotlib.pyplot as pltplt.title("折线图") # 设定字体为微软雅黑plt.ylabel('Y轴') # 设置Y轴标签plt.xlabel('Time') # 设置X轴标签plt.xlim(xmin=1, xmax=10) # 设置x轴范围plt.ylim(ymin=2, ymax=15) # 设置y轴范围plt.rcParams['font.sans-serif'] = ['Microsoft Yahei']plt.xticks(list(range(1, 15, 2)), rotation=0, fontsize=12) # 调整x轴刻度范围plt.plot([1, 3, 4, 6], [2, 5, 10, 12], alpha=1)plt.grid(alpha=0.4) # 绘制网格,透明度为0.4plt.axhline(5, color='green', lw=2, label="分割线") # 绘制平行于x轴的水平参考线,绿色,名称为分割线plt.axvspan(xmin=2,xmax=5,facecolor='r',alpha=0.2) # 绘制垂直于x轴的参考区域plt.show()
9、pyplot模块绘制柱状图、饼图、散点图
plt.plot() 方法绘制的是折线图,也是最常用的方法;
pyplot 模块也提供了其他方法来绘制柱状图、饼图、散点图:
-
plt.bar() 方法绘制柱状图
import matplotlib.pyplot as pltplt.title("柱状图") # 设定字体为微软雅黑plt.ylabel('Y轴') # 设置Y轴标签plt.xlabel('Time') # 设置X轴标签plt.xlim(xmin=1, xmax=10) # 设置x轴范围plt.ylim(ymin=2, ymax=15) # 设置y轴范围plt.rcParams['font.sans-serif'] = ['Microsoft Yahei']plt.xticks(list(range(1, 15, 2)), rotation=0, fontsize=12) # 调整x轴刻度范围plt.bar([1, 3, 4, 6], [2, 5, 10, 12], alpha=1)plt.grid(alpha=0.4) # 绘制网格,透明度为0.4plt.show()
-
plt.pie() 方法绘制饼图
import matplotlib.pyplot as pltplt.title("饼图") # 设定字体为微软雅黑plt.rcParams['font.sans-serif'] = ['Microsoft Yahei']value = [1, 3, 4, 6]plt.pie(value) # 绘制饼图,将一个列表传入到 pie() 函数中即可plt.grid(alpha=0.4) # 绘制网格,透明度为0.4plt.show()
饼图属性设置:- 设置饼图的颜色:colors 关键字设置,颜色列表由表示颜色的英文单词、表示颜色单词的简称或 RGB 格式组成。
- 设置标签:labels 关键字设置,默认为None,需要传入列表形式的值。
- 设置突出部分:explode 关键字设置,默认为None,需要传入列表数据,要强调那个扇形,就把相应的值设置成非 0。
- 设置填入百分比数值:autopct 关键字设置,默认为None,格式字符串如:‘%1.1f%%’。
- 饼图旋转:从x轴逆时针旋转角度:startangle 关键字设置,默认为0,浮点类型;指定分数方向顺逆时针:counterclock 关键字设置,默认为True,bool类型。
- 设置阴影:shadow 关键字设置,默认为False。
import matplotlib.pyplot as pltplt.title("饼图") # 设定字体为微软雅黑plt.rcParams['font.sans-serif'] = ['Microsoft Yahei']value = [1, 3, 4, 6]colors = ["blue", 'g', "#88c999", 'y'] # 1、设置饼图的颜色labels = ["Python", "C#", "Java", "Other"] # 2、设置饼图标签explode = (0, 0.1, 0, 0) # 3、设置突出部分,第二个数据突出autopct = "%1.1f%%" # 4、设置填入百分比数值plt.pie(value, colors=colors, labels=labels, explode=explode, autopct=autopct, shadow=True)plt.grid(alpha=0.4) # 绘制网格,透明度为0.4plt.show()
-
plt.scatter() 方法绘制散点图
import matplotlib.pyplot as pltplt.title("散点图") # 设定字体为微软雅黑plt.rcParams['font.sans-serif'] = ['Microsoft Yahei']value = [1, 3, 4, 6]labels = ["Python", "C#", "Java", "Other"] # 2、设置饼图标签 & 设置散点图横坐标plt.scatter(labels, value)plt.grid(alpha=0.4) # 绘制网格,透明度为0.4plt.show()
散点图属性设置:-
点的大小:s 关键字设置;
-
点的颜色:c 关键字设置;
-
点的透明度:alpha 关键字设置;
-
点的边缘颜色:edgecolors 关键字设置;
-
点的边缘线宽度:linewidths 关键字设置。
import matplotlib.pyplot as pltplt.title("散点图") # 设定标题plt.rcParams['font.sans-serif'] = ['Microsoft Yahei'] # 设定字体为微软雅黑value = [1, 3, 4, 6] # y轴labels = ["Python", "C#", "Java", "Other"] # 2、设置饼图标签 & 设置散点图横坐标plt.scatter(labels, value, s=100, c="y", alpha=0.5, edgecolors="b", linewidths=0.5) # 点大小设置为100,颜色设置为黄色,透明度0.5,边缘线颜色黑色,粗度0.5plt.grid(alpha=0.4) # 绘制网格,透明度为0.4plt.show()
-
10、plt.subplot()绘制多个子图对象(Axes对象)
在 Matplotlib 中,一个 Figure 对象(也就是画布)可以包括多个 Axes 对象(也就是子图),一个 Axes 代表一个绘图区域。
Matplotlib 提供了两个方法来绘制多图 plt.subplot() 和 plt.subplots() 方法。
-
subplot() 方法:在绘图时需要指定位置,如果不创建 Axes 对象,Matplotlib 缺省会自动调用 plt.subplot(1,1,1) 指定 1行,1列,共1个子图,当前子图为第1个。
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft Yahei'] # 设定字体为微软雅黑x = [2, 6, 8, 10] # x轴y1 = [1, 3, 4, 6] # y轴y2 = [9, 5, 6, 11] # y轴plt.subplot(2, 1, 1) # 指定2行,1列,共两个axe,当前使用第1个绘图块plt.title("绘图块1") # 设定标题plt.plot(x, y1, 1) # 绘图plt.grid(alpha=0.4) # 绘制网格,透明度为0.4plt.subplot(2, 1, 2) # 当前使用第2个绘图块plt.title("绘图块2") # 设定标题plt.plot(x, y2, 2) # 绘图plt.grid(alpha=0.4) # 绘制网格,透明度为0.4plt.show()
-
subplots() 方法:可以一次生成多个,在调用时只需要调用生成对象的 ax 即可。同时 subplots() 方法中融合了plt.figure() 的功能。
常用参数设置:-
设置图表的行数:nrows,默认为 1;
-
设置图表的列数:ncols,默认为 1;
-
设置 x、y 轴是否共享属性:sharex、sharey,默认为 False。
注意:当定义子图分布只有一行或一列时,ax的索引也只有1位,当子图分布是两行两列及以上时,ax的索引也要变成ax[0,0],ax[0,1]这样的形式。import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['Microsoft Yahei'] # 设定字体为微软雅黑x = [2, 6, 8, 10] # x轴y1 = [1, 3, 4, 6] # y轴y2 = [9, 5, 6, 11] # y轴f, ax = plt.subplots(2, 2, sharey=True) #ax[0,0].plot(x, y1)ax[0,0].set_title('Sharing Y axis')ax[0,1].set_title("绘图块1行2列") # 设定标题ax[1,0].set_title("绘图块2行1列") # 设定标题ax[1,1].plot(x, y2)plt.show()
-
11、plt.figure()绘制多个绘图对象(Figure对象)
Matplotlib 每个绘图区都对应一个 Figure 对象,一个绘图 Figure 对象里面可以包含多个 Axes 子图对象。如果不创建 Figure 对象,Matplotlib 缺省会自动调用 plt.figure(1) 创建绘图对象。
创建 Figure() 对象:
figure(num=None, figsize=None, dpi=None, facecolor=None,edgecolor=None, frameon=True, FigureClass=Figure, clear=False, **kwargs)
常用参数:
- 设置图形背景颜色:facecolor 关键字;
- 设置图形分辨率:dpi 关键字,缺省值为
rc figure.dpi
; - 设置图像大小:figsize 关键字,缺省值为
rc figure.figsize
(1 英寸等于 2.54 cm)。
注意:使用 subplots() 方法 创建子图 Axes 对象时也会创建 Figure 对象
import matplotlib.pyplot as pltplt.figure(1, facecolor="y") # 创建第一个 Figure对象plt.plot([1, 4, 6, 23]) # 绘图plt.title("第一个 Figure对象") # 设定标题plt.rcParams['font.sans-serif'] = ['Microsoft Yahei'] # 设定字体为微软雅黑x = [2, 6, 8, 10] # x轴y1 = [1, 3, 4, 6] # y轴y2 = [9, 5, 6, 11] # y轴f, ax = plt.subplots(2, 2, sharey=True) # 创建第二个 Figure对象ax[0, 0].plot(x, y1)ax[0, 0].set_title('Sharing Y axis')ax[0, 1].set_title("绘图块1行2列") # 设定标题ax[1, 0].set_title("绘图块2行1列") # 设定标题ax[1, 1].plot(x, y2)plt.show()
来源地址:https://blog.csdn.net/sallyyellow/article/details/130291477