目录
Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发,matplotlib.pyplot是绘制各类可视化图形的命令子库
导入:
import matplotlib.pyplot as plt
是pyplot中的一个功能强大的函数,plot()函数可以对一般的简单数据进行绘制
直接使用plot()画图的语法:
plt.plot(x,y,fmt='xxx',linestyle=,marker=,color=,linewidth=,markersize=,label=)
·linestyle:表示线段的样式,参数为字符串
| linestyle参数 | 线型 |
| '-' | 实线 |
| '--' | 虚线 |
| '-.' | 点划线 |
| ':' | 点虚线 |
| ' ' | 无线 |

·linewidth:线的粗细,参数形式:数值
·marker:点的样式,参数形式:字符串
| marker | 标记点 |
| '.' | 点 |
| ',' | 像素 |
| '^' 'v' '>' '<' | 上下左右的三角形 |
| '1' '2' '3' '4' | 上下左右的三叉线 |
| 'o' | 圆形 |
| 's' 'D' | 方形 |
| 'p' | 五角形 |
| 'h' 'H' | 六边形 |
| '*' | 五角星 |
| '+' 'x' | 十字交叉 |
| '-' | 横线 |
| ' | ' |

·markersize:点的大小,参数形式:数值
·color:调节线条和点的颜色,参数形式:字符串
| 字符串 | 颜色 |
| 'r' | 红色 |
| 'g' | 绿色 |
| 'b' | 蓝色 |
| 'y' | 黄色 |
| 'c' | 青色 |
| 'm' | 品红 |
| 'k' | 黑色 |
| 'w' | 白色 |
·lable:legend文字
savefig()函数用于保存当前图形为png,jpg格式的图像,默认PNG格式,可以通过dpi修改输出的质量
Matplotlib库测试
ylable()和xlable()函数数值y轴和x轴标签
plt.show():无标签显示
plt.legend():为图打标签
代码实例:
- import matplotlib.pyplot as plt
-
- plt.plot([3,1,4,5,2])
- plt.ylabel("Grade")
- plt.legend()
- plt.show()
绘图:

注:当plt.plot()只有一个输入列表时,参数被当做y轴,以x轴为索引自动生成
代码:
- import matplotlib.pyplot as plt
-
- plt.plot([0,2,4,6,8],[3,1,4,5,2])
- plt.ylabel("Grade")
- plt.legend("Grade")
- plt.savefig('test',dpi=600)
- plt.show()
图:
注:plt.plot(x,y)当有两个参数时,按照x轴和y轴的顺序来绘制数据点
subplot是一个将多个图像画到一个平面上的工具,参数n,m类似于矩阵的n行m列,第三个参数表示绘图在第几张图
使用方法:
subplot(m,n,p)或者subplot(m n p)
绘图实例:
- import matplotlib.pyplot as plt
- import numpy as np
-
-
- def f(t):
- return np.exp(-t) * np.cos(2 * np.pi * t)
-
- a=np.arange(0.0,5.0,0.02)
- plt.subplot(211) #2张图,绘第一张图
- plt.plot(a,f(a))
- plt.subplot(2,1,2) #绘第二张
- plt.plot((3,5,2,6),'r--')
- plt.show()
效果图:

pyplot并不默认中文显示,需要rcParams修改字体
例如:

| 属性 | 说明 |
| 'font.family' | 用于显示字体的名称 |
| 'font.style' | 字体风格,正常‘normal’或斜体‘italic’ |
| 'font.size' | 字体大小,整数字号或者'large','x-small' |
| 中文字体 | 说明 |
| 'SimHei' | 中文黑体 |
| 'Kaiti' | 中文楷体 |
| 'LiSu' | 中文隶书 |
| 'FangSong' | 中文仿宋 |
| 'YouYuan' | 中文幼圆 |
| 'STSong' | 华文宋体 |
代码实例:
- import matplotlib.pyplot as plt
- import matplotlib
- import numpy as np
-
- matplotlib.rcParams['font.family']='SimHei'
- matplotlib.rcParams['font.size']=10
- a=np.arange(0.0,5.0,0.02)
- plt.xlabel('横轴:时间')
- plt.ylabel('纵轴:振幅')
- plt.plot(a,np.cos(2*np.pi*a),'r--')
- plt.show()
效果图:

在有中文输出的地方,增加一个属性:fontproperties
代码实例:
- import matplotlib.pyplot as plt
- import numpy as np
-
- a=np.arange(0.0,5.0,0.02)
- plt.xlabel('横轴:时间',fontproperties='SimHei',fontsize=10)
- plt.ylabel('纵轴:振幅',fontproperties='SimHei',fontsize=10)
- plt.plot(a,np.cos(2*np.pi*a),'r--')
- plt.show()
效果图:

| 函数 | 说明 |
| plt.xlable() | 对x轴增加文本标签 |
| plt.ylable() | 对y轴增加文本标签 |
| plt.title() | 对图形整体增加文本标签 |
| plt.text() | 在任意位置增加文本 |
| plt.annotate() | 在图形中增加带箭头的注解 |
代码实例:
- import matplotlib.pyplot as plt
- import numpy as np
-
- a=np.arange(0.0,5.0,0.02)
- plt.xlabel('横轴:时间',fontproperties='SimHei',fontsize=10,color='green')
- plt.ylabel('纵轴:振幅',fontproperties='SimHei',fontsize=10,color='blue')
- plt.plot(a,np.cos(2*np.pi*a),'r--')
- plt.title(r'正弦函数实例$y=cos(2\pi x)$',fontproperties='SimHei',fontsize=25)
- plt.text(2,1,r'$\mu=100$',fontsize=15)
- plt.axis([-1,6,-2,2])
- plt.grid(True)
- plt.show()
效果图:



·GridSpec:表示创建的网格区域,参数表示矩阵的n行m列
·CurSpec:表示选中的网格区域
·colspan:表示横向合并网格,参数表示合并的个数
·rowspan:表示纵向合并网格,参数表示合并的个数

