Python 第三方模块之 matplotlib - 绘图库
简介
matplotlib是受MATLAB的启发构建的。MATLAB是数据绘图领域广泛使用的语言和工具。MATLAB语言是面向过程的。利用函数的调用,MATLAB中可以轻松的利用一行命令来绘制直线,然后再用一系列的函数调整结果。
matplotlib有一套完全仿照MATLAB的函数形式的绘图接口,在matplotlib.pyplot模块中。这套函数接口方便MATLAB用户过度到matplotlib包
- matplotlib官网:http://matplotlib.org/
- http://matplotlib.org/examples/index.html
- http://matplotlib.org/gallery.html
安装
1 |
|
面板和子图
Figure:面板(图),matplotlib中的所有图像都是位于figure对象中,一个图像只能有一个figure对象。
Subplot:子图,figure对象下创建一个或多个subplot对象(即axes)用于绘制图像。
简单示例
1 |
|
一些参数
配置参数:
参数名 | 参数说明 |
---|---|
axex | 设置坐标轴边界和表面的颜色、坐标刻度值大小和网格的显示 |
figure | 控制dpi、边界颜色、图形大小、和子区( subplot)设置 |
font | 字体集(font family)、字体大小和样式设置 |
grid | 设置网格颜色和线性 |
legend | 设置图例和其中的文本的显示 |
line | 设置线条(颜色、线型、宽度等)和标记 |
patch | 是填充2D空间的图形对象,如多边形和圆。控制线宽、颜色和抗锯齿设置等。 |
savefig | 可以对保存的图形进行单独设置。例如,设置渲染的文件的背景为白色。 |
verbose | 设置matplotlib在执行期间信息输出,如silent、helpful、debug和debug-annoying。 |
xticks、yticks | 为x,y轴的主刻度和次刻度设置颜色、大小、方向,以及标签大小。 |
线条相关属性标记设置
线条风格linestyle或ls | 描述 |
---|---|
‘-‘ | 实线 |
‘:’ | 虚线 |
‘–’ | 破折线 |
‘None’, ‘ ‘, ‘’ | 什么都不画 |
‘-.’ | 点划线 |
线条标记
标记maker | 描述 |
---|---|
‘o’ | 圆圈 |
‘.’ | 点 |
‘D’ | 菱形 |
‘s’ | 正方形 |
‘h’ | 六边形1 |
‘*’ | 星号 |
‘H’ | 六边形2 |
‘d’ | 小菱形 |
‘_’ | 水平线 |
‘v’ | 一角朝下的三角形 |
‘8’ | 八边形 |
‘<’ | 一角朝左的三角形 |
‘p’ | 五边形 |
‘>’ | 一角朝右的三角形 |
‘,’ | 像素 |
‘^’ | 一角朝上的三角形 |
‘+’ | 加号 |
‘ ‘ | 竖线 |
‘None’,’’,’ ‘ | 无 |
‘x’ | x |
颜色
别名 | 颜色 |
---|---|
b | 蓝色 |
g | 绿色 |
r | 红色 |
y | 黄色 |
c | 青色 |
k | 黑色 |
m | 洋红色 |
w | 白色 |
如果这两种颜色不够用,还可以通过两种其他方式来定义颜色值:
- 1、使用HTML十六进制字符串 color=’#123456’ 使用合法的HTML颜色名字(’red’,’chartreuse’等)。
- 2、也可以传入一个归一化到[0,1]的RGB元祖。 color=(0.3,0.3,0.4)
一些语法
背景色
通过向如matplotlib.pyplot.axes()或者matplotlib.pyplot.subplot()这样的方法提供一个axisbg参数,可以指定坐标轴的背景色。
1 |
|
fiure
1 |
|
复杂示例
1 |
|
plot时可以设置的属性包括如下:
属性 | 值类型 |
---|---|
alpha | 浮点值 |
animated | [True / False] |
antialiased or aa | [True / False] |
clip_box | matplotlib.transform.Bbox 实例 |
clip_on | [True / False] |
clip_path | Path 实例, Transform,以及Patch实例 |
color or c | 任何 matplotlib 颜色 |
contains | 命中测试函数 |
dash_capstyle | [‘butt’ / ‘round’ / ‘projecting’] |
dash_joinstyle | [‘miter’ / ‘round’ / ‘bevel’] |
dashes | 以点为单位的连接/断开墨水序列 |
data | (np.array xdata, np.array ydata) |
figure | matplotlib.figure.Figure 实例 |
label | 任何字符串 |
linestyle or ls | [ ‘-‘ / ‘–’ / ‘-.’ / ‘:’ / ‘steps’ / …] |
linewidth or lw | 以点为单位的浮点值 |
lod | [True / False] |
marker | [ ‘+’ / ‘,’ / ‘.’ / ‘1’ / ‘2’ / ‘3’ / ‘4’ ] |
markeredgecolor or mec | 任何 matplotlib 颜色 |
markeredgewidth or mew | 以点为单位的浮点值 |
markerfacecolor or mfc | 任何 matplotlib 颜色 |
markersize or ms | 浮点值 |
markevery | [ None / 整数值 / (startind, stride) ] |
picker | 用于交互式线条选择 |
pickradius | 线条的拾取选择半径 |
solid_capstyle | [‘butt’ / ‘round’ / ‘projecting’] |
solid_joinstyle | [‘miter’ / ‘round’ / ‘bevel’] |
transform | matplotlib.transforms.Transform 实例 |
visible | [True / False] |
xdata | np.array |
ydata | np.array |
zorder | 任何数值 |
一个窗口多个图
1 |
|
极坐标
属性设置同点图、线图中
1 |
|
柱形图
属性设置同点图、线图中
1 |
|
直方图
1 |
|
散点图
1 |
|
三维图
1 |
|
画矩形、多边形、圆形和椭圆
1 |
|
读取图片显示
imshow()接收一张图像,只是画出该图,并不会立刻显示出来。
imshow后还可以进行其他draw操作,比如scatter散点等,所有画完后使用plt.show()才能进行结果的显示。
plt.show() 之前必须要有 imshow(), 否则 plt.show() 将是空的图像
1 |
|
https://www.jianshu.com/p/9a70ad7fab15
https://blog.csdn.net/jpc20144055069/article/details/104706409
清理
figure 的重复利用能大大节约时间,但是 matplotlib 维护的 figure 有数量上限(RuntimeWarning: More than 20 figures have been opened.)。
并且,不断的创建新的 figure 实例,很容易造成内存泄漏,而应合理的复用,能大大的提高运行速度。
此外,在某些情况下,不清理 figure 将有可能造成在第一幅中 plot 的线再次出现在第二幅图中。
清理方式包括:
- plt.cla() # 清除axes,即当前 figure 中的活动的axes,但其他axes保持不变。
- plt.clf() # 清除当前 figure 的所有axes,但是不关闭这个 window,所以能继续复用于其他的 plot。
- plt.close() # 关闭 window,如果没有指定,则指当前 window。
1 |
|