matplotlib基础系统介绍
目录
1. Matplotlib概述
2. 讲解Matplotlib核心原理
3. Matplotlib相关基础操作介绍
- 3.1 创建figure(画布)的方式及完整绘图步骤
- 3.2 线型设置
- 3.3 中文与特殊符号(负号)相关支持设置
- 3.4 图例和网络的设置
- 3.5 坐标轴的设置和相关操作
- 3.6 figure的区域和大小设置
1.Matplotlib概述
Matplotlib 是一个基于python 的绘图库,完全支持二维图像,有限支持三维图形,Matplotlib是python编程语言及其数据科学扩展包NumPy的可视化操作界面库。它利用通过的图形用户界面工具包(如Tkinter、wxPython 、Qt、FLTK、Cocoatoolkits或GTK+)向应用程序嵌入式绘图提供了应用程序接口(API)。此外,Matolotlib还有一个基于图像处理库(如图形库OpenGL)的pylab接口,其设计与MATLAB非常类似。SciPy就是用Matplotlib进行图形绘制。
2. 讲解Matplotlib核心原理
想认识matplotlib绘图的原理就必须清楚的理解figure(画布)、axes(坐标系)、axis(坐标轴)三者之间的关系
类似画画,首先需要一张画布,对于matplotlib相当于初始化了一张figure(画布),然后一张画布可以分配出不同的区域进行画画,相当于figure可以指定多个axes(坐标系),而在每个axes(坐标系)上绘图,相当于每个axes(坐标系)中都有一个axis(坐标轴)
- 画图的实现
- matplotlib绘图实现
3. Matplotlib相关基础操作介绍
3.1创建figure(画布)的方式及完整绘图步骤
一、创建figure(画布)的方式
- 隐式创建
- 显示创建
①隐式创建figure对象
先观察下面代码
import matplotlib.pyplot as plt
x = [-1, 3, 5, 0]
y = [4, -9, 2, 8]
plt.plot(x, y)
plt.show()
看到上面的结果,可能会有疑问,在前面的叙述中,我们已经说过,想要使用matplotlib绘图,必须先要创建一个figure(画布)对象,可是上面的代码并没有创建,这是为什么呢?
- 这是因为在第一次执行plt.xxx()这句代码时,系统就会自动地去判断是否已经有了figure对象,如果没有,系统会自动创建一个figure对象,并且在这个figure之上,自动创建一个axes坐标系。
注意:
1. 当我们只是绘制一个图形时,那么直接plt.xxx(),系统会自动帮我创建一个figure对象和一个axes坐标系。
2.这也意味着如果我们不设置figure对象,那么一个figure对象上,只能有一个axes坐标系,即我们只能绘制一个图形。
②显式创建figure对象
- 对于不同的图,想让他分布在不同的图上,那么就得用plt.figure进行设置,以plt.figure( )开头,获取每个axes(坐标系)
观察下面基本创建代码,后面会详细介绍
import matplotlib.pyplot as plt
figure = plt.figure() # 创建figure(画布)
figure.add_subplot(2,2,1)
figure.add_subplot(2,2,2)
figure.add_subplot(2,2,3)
figure.add_subplot(2,2,4)
plt.plot()
plt.show()
导入数据之后的结果
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-2,2,200)
y1 = 2 * x + 1
y2 = 2*x**2
y3 = 1/x
y4 = x ** 0.5
figure = plt.figure()
axes1 = figure.add_subplot(2,2,1)
axes2 = figure.add_subplot(2,2,2)
axes3 = figure.add_subplot(2,2,3)
axes4 = figure.add_subplot(2,2,4)
axes1.plot(x, y1)
axes2.plot(x, y2)
axes3.plot(x, y3)
axes4.plot(x, y4)
plt.show()
结果如下图所示
二、完整的绘图步骤
- 初步认识创建figure后,我了解基本的绘图步骤
① 导库
# 我们主要用的是matplotlib中的pyplot
import matplotlib.pyplot as plt
② 创建figure画布对象
-
如果绘制一个简单的小图形,可以不设置figure对象,系统默认创建的figure对象。
-
如果需要绘制多个图形,那么就必须创建figure对象并且得到每个位置上的axes对象,再对每个axes相应的位置进行绘制。
③ 根据figure对象进行布局设置
figure = plt.figure() #只有一个坐标系
figure.add_subplot(1, 1, 1)
plt.show()
figure = plt.figure() # 图一
figure.add_subplot(1, 2, 1)
figure.add_subplot(1, 2, 2)
plt.show()
figure = plt.figure() # 图二
figure.add_subplot(2, 2, 1)
figure.add_subplot(2, 2, 2)
figure.add_subplot(2, 2, 4)
plt.show()
根据上面代码自行测试得出规律
④ 获取对应的axes坐标系对象
figure = plt.figure()
axes1 = figure.add_subplot(2,2,1)
axes2 = figure.add_subplot(2,2,2)
axes3 = figure.add_subplot(2,2,3)
axes4 = figure.add_subplot(2,2,4)
⑤ 对相应位置的图形进行绘制
绘制图形关键一步:传入数据,并对绘制图形的一些细节进行设置。如下例子,相关知识点后续会介绍;
x = np.linspace(-2, 2, 200)
y2 = 2 * x ** 2
plt.plot(x, y2, 'b-o', lw=5, marker='o', mfc='r')
plt.show()
⑥ 显示图形
如果是在pycharm中绘图的话,必须要加下面代码,才能显示
plt.show()
至于figure.show()不知道是本人的版本问题还是怎么样,在pycharm中没效果
如果使用Jupyter Notebook 则不需要,自动显示
3.2 线型设置
线型设置主要四种
- ①颜色
- ②点标记
- ③线条样式
- ④透明度设置
常用的参数名 (小括号为简写) |
参数介绍 |
---|---|
color( c ) | 线条颜色 |
linestyle(ls) | 线条形状 |
linewidth(lw) | 线的宽度 |
marker | 点标记形状 |
markersize(ms) | 点标记的大小 |
markeredgecolor(mec) | 点边缘颜色 |
markeredgewidth(mew) | 点边缘宽度 |
markerfacecolor(mfc) | 点的颜色 |
举例:
plt.plot([5, 6, 7, 8], [1, 2, 3, 4], color='blue', linestyle='--',
linewidth=5, marker='^', markeredgecolor='green', markersize=7,
markeredgewidth=2, markerfacecolor=