matplotlib绘图基础语法
- 前言
- [1 pyplot基础语法](#1 pyplot基础语法)
-
- [1.1 创建画布与创建子图](#1.1 创建画布与创建子图)
- [1.2 添加画布内容](#1.2 添加画布内容)
- [1.3 保存与显示图形](#1.3 保存与显示图形)
- [1.4 设置pyplot的动态rc参数](#1.4 设置pyplot的动态rc参数)
前言
matplotlib中应用最广的是matplotlib.pyplot模块,这个模块是一个命令风格函数的集合。
1 pyplot基础语法
大部分pyplot图形绘制遵循一个流程,使用这个流程可以完成大部分图形的绘制。pyplot绘图流程主要分为3个部分,如下所示:
1.1 创建画布与创建子图
这一部分主要作用是构建出一张空白画布,并可以选择是否将整个画布划分为多个部分,方便在同一幅图上绘制多个图形的情况。当只需要绘制一幅简单的图形时,这部分内容可以省略。
pyplot创建画布与选中子图的常用函数如下
函数名称 | 作用 |
---|---|
plt.figure | 创建一个空白画布,可以指定画布大小、像素 |
figure.add | 创建并选中子图,可以指定子图的行数、列数和选中图片的编号 |
1.2 添加画布内容
这是绘图的主体部分。添加标题、坐标轴名称、会议图形等是并列的,没有先后顺利。但是添加图例一定要在绘制图形之后。各类标签如下所示:
函数名称 | 作用 |
---|---|
plt.title | 标题,可指定标题的名称、位置、颜色、字体大小等参数 |
plt.xlabel | 添加x轴名称,可以指定位置、颜色、字体大小等参数 |
plt.ylabel | 添加y轴名称,可以指定位置、颜色、字体大小等参数 |
plt.xlim | 指定x轴范围,只能确定一个数值区间,而无法使用字符串标识 |
plt.ylim | 指定y轴范围,只能确定一个数值区间,而无法使用字符串标识 |
plt.xticks | 指定x轴刻度的数目与取值 |
plt.yticks | 指定y轴刻度的数目与取值 |
plt.legend | 指定当前图形的图例,可以指定位置、颜色、字体大小等参数 |
1.3 保存与显示图形
函数名称 | 作用 |
---|---|
plt.savefig | 保存绘制的图像,可以指定图形的分辨率、边缘的颜色等参数 |
plt.show | 在本机显示图形 |
不含子图绘制的标准绘图流程示例
python
import numpy as np
import matplotlib.pyplot as plt
## %matplotlib inline表示在行中显示图片,在命令行运行报错
data = np.arange(0,1.1,0.01)
plt.title('lines') ## 添加标题
plt.xlabel('x')## 添加x轴的名称
plt.ylabel('y')## 添加y轴的名称
plt.xlim((0,1))## 确定x轴范围
plt.ylim((0,1))## 确定y轴范围
plt.xticks([0,0.2,0.4,0.6,0.8,1])## 规定x轴刻度
plt.yticks([0,0.2,0.4,0.6,0.8,1])## 确定y轴刻度
plt.plot(data,data**2)## 添加y=x^2曲线
plt.plot(data,data**4)## 添加y=x^4曲线
plt.legend(['y=x^2','y=x^4'])
plt.savefig('y=x^2.png')
plt.show()
输出:
包含子图绘制的示例
python
rad = np.arange(0,np.pi*2,0.01)
##第一幅子图
p1 = plt.figure(figsize=(8,6),dpi=80)## 确定画布大小
ax1 = p1.add_subplot(2,1,1)## 创建一个两行1列的子图,并开始绘制第一幅
plt.title('lines')## 添加标题
plt.xlabel('x')## 添加x轴的名称
plt.ylabel('y')## 添加y轴的名称
plt.xlim((0,1))## 确定x轴范围
plt.ylim((0,1))## 确定y轴范围
plt.xticks([0,0.2,0.4,0.6,0.8,1])## 规定x轴刻度
plt.yticks([0,0.2,0.4,0.6,0.8,1])## 确定y轴刻度
plt.plot(rad,rad**2)## 添加y=x^2曲线
plt.plot(rad,rad**4)## 添加y=x^4曲线
plt.legend(['y=x^2','y=x^4'])
##第二幅子图
ax2 = p1.add_subplot(2,1,2)## 创开始绘制第2幅
plt.title('sin/cos') ## 添加标题
plt.xlabel('rad')## 添加x轴的名称
plt.ylabel('value')## 添加y轴的名称
plt.xlim((0,np.pi*2))## 确定x轴范围
plt.ylim((-1,1))## 确定y轴范围
plt.xticks([0,np.pi/2,np.pi,np.pi*1.5,np.pi*2])## 规定x轴刻度
plt.yticks([-1,-0.5,0,0.5,1])## 确定y轴刻度
plt.plot(rad,np.sin(rad))## 添加sin曲线
plt.plot(rad,np.cos(rad))## 添加cos曲线
plt.legend(['sin','cos'])
plt.savefig('sincos.png')
plt.show()
输出:
1.4 设置pyplot的动态rc参数
pyplot使用rc配置文件来自定义图形的各种默认属性,被称为rc配置或rc参数。在pyplot中,几乎所有的默认属性都是可以控制的,例如视图窗口大小以及每英寸点数、线条宽度、颜色和样式、坐标轴、坐标和网络属性、文本、字体等。
默认rc参数可以在python交互式环境中动态更改。所有存储在字典变量中的rc参数,都被称为rcParams。rc参数在修改后,绘图时使用默认的参数就会发生改变。
调节线条的rc参数
python
x = np.linspace(0, 4*np.pi)## 生成x轴数据
y = np.sin(x)## 生成y轴数据
plt.plot(x,y,label="$sin(x)$")## 绘制sin曲线图
plt.title('sin')
plt.savefig('默认sin曲线.png')
plt.show()
输出:
修改rc参数后的图
python
plt.rcParams['lines.linestyle'] = '-.'
plt.rcParams['lines.linewidth'] = 3
plt.plot(x,y,label="$sin(x)$")## 绘制三角函数
plt.title('sin')
plt.savefig('修改rc参数后sin曲线.png')
plt.show()
输出:
线条常用的rc参数名称、解释如下:
rc参数名称 | 解释 | 取值 |
---|---|---|
lines.linewidth | 线条宽度 | 0------10之间取值,默认为1.5 |
lines.linestyle | 线条样式 | 取"-、--、-.、:"4种。默认为- |
lines.marker | 线条上点的形状 | 取"o、D、h"等20种。默认为None |
lines.markersize | 点的大小 | 0------10之间取值,默认为1 |
其中,lines.linestyle参数取值及意义
lines.linestyle取值 | 意义 |
---|---|
- | 实线 |
-. | 点线 |
-- | 长虚线 |
: | 短虚线 |
lines.marker参数取值及意义
lines.marker取值 | 意义 | lines.marker取值 | 意义 |
---|---|---|---|
o | 圆圈 | . | 点 |
D | 菱形 | s | 正方形 |
h | 六边形1 | * | 星号 |
H | 六边形2 | d | 小菱形 |
- | 水平线 | v | 一角朝下的三角形 |
8 | 八边形 | < | 一角朝左的三角形 |
p | 五边形 | > | 一角朝右的三角形 |
, | 像素 | ^ | 一角朝上的三角形 |
+ | 加号 | / | 竖线 |
None | 无 | x | X |
注意:由于pyplot字体并不支持中文字符的显示,因此需要通过设置font.sans-serif参数来改变绘图时的字体,使得图形可以正常显示中文。同时,由于更改字体后,会导致坐标轴的部分字体无法显示,因此需要同时更改axes.unicode_minus参数,如下所示。
python
## 无法显示中文标题
plt.plot(x,y,label="$sin(x)$")## 绘制三角函数
plt.title('sin曲线')
plt.savefig('无法显示中文标题sin曲线.png')
plt.show()
输出:
python
##设置rc参数显示中文标题
## 设置字体为SimHei显示中文
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False ## 设置正常显示符号
plt.plot(x,y,label="$sin(x)$")## 绘制三角函数
plt.title('sin曲线')
plt.savefig('显示中文标题sin曲线.png')
plt.show()
输出: