基础知识
信息
-
默认省略导入:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
-
Cheat Sheet:
pyplot
是matplotlib
的子模块, 提供了和MATLAB类似的绘图API.
图的类型
plot()
: 用来绘制线图和散点图scatter()
: 用来绘制散点图bar()
: 用来绘制垂直条形图和水平条形图hist()
: 用来绘制直方图pie()
: 用来绘制饼图imshow()
: 用来绘制图像subplots()
: 用来创建子图
数据源
例子
定义:
输出:
Tip
若只提供一个数组, Matplotlib会自动生成默认的x
坐标值, 这种自动生成的x
坐标值是从0开始的整数序列.
绘图样式
marker
参数
可以使用marker
参数自定义坐标标记, 可以定义的符号如下:
标记 | 描述 |
---|---|
. |
点 |
, |
像素点 |
o |
实心圆 |
v |
下三角 |
^ |
上三角 |
< |
左三角 |
> |
右三角 |
1 |
下丁叉 |
2 |
上丁叉 |
3 |
左丁叉 |
4 |
右丁叉 |
8 |
八角形 |
s |
正方形 |
p |
五边形 |
P |
加号 (填充) |
* |
星号 |
h |
六边形1 |
H |
六边形2 |
+ |
加号 |
x |
乘号x |
X |
乘号x (填充) |
D |
菱形 |
d |
瘦菱形 |
| |
竖线 |
_ |
横线 |
0 (TICKLEFT) |
左横线 |
1 (TICKRIGHT) |
右横线 |
2 (TICKUP) |
上竖线 |
3 (TICKDOWN) |
下竖线 |
4 (CARETLEFT) |
左箭头 |
5 (CARETRIGHT) |
右箭头 |
6 (CARETUP) |
上箭头 |
7 (CARETDOWN) |
下箭头 |
8 (CARETLEFTBASE) |
左箭头 (中间点为基准) |
9 (CARETRIGHTBASE) |
右箭头 (中间点为基准) |
10 (CARETUPBASE) |
上箭头 (中间点为基准) |
11 (CARETDOWNBASE) |
下箭头 (中间点为基准) |
None , ' ' , or ' ' |
没有任何标记 |
'$...$' |
渲染指定的字符串,例如'$f$' 以字母f为标记 |
例子
定义:
ypoints = np.array([1, 2, 3, 4, 5, 6, 7, 4, 6, 3, 6, 3, 6, 2, 7, 2, 6])
plt.plot(ypoints, marker="d")
plt.show()
输出:
linestyle
参数
可以使用linestyle
参数自定义线的样式.
线类型标记 | 描述 |
---|---|
- |
实线 |
-- |
虚线 |
-. |
破折线 |
: |
点划线 |
`` | 不画线 |
color
参数
可以使用color
参数自定义线的颜色.
颜色标记 | 描述 |
---|---|
r |
红色 |
g |
绿色 |
b |
蓝色 |
c |
青色 |
m |
品红 |
y |
黄色 |
k |
黑色 |
w |
白色 |
Tip
可以是自定义颜色类型, 如用十六进制表示.
linewidth
参数
可以使用linewidth
参数定义线的宽度.
fmt
参数
fmt
参数定义了基本格式, 如标记, 线条样式和颜色, 其格式如下:
各个子参数详情见:
ms
/mfc
/mec
参数
ms
/mfc
/mec
用于自定义标记的大小和颜色.
ms
: markersize, 定义标记的大小mfc
: markerfacecolor, 定义标记内部的颜色mec
: markeredgecolor, 定义标记边框的颜色
例子
绘制多条线
可以在多次调用绘图函数或者通过在单个绘图函数中传入多组数据来绘制多条线.
例子
轴标签和标题
轴标签
可以使用xlabel
和ylabel
函数设置x
轴和y
轴的标签.
例子
定义:
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.plot(x, y)
plt.xlabel("x - label")
plt.ylabel("x - label")
plt.show()
输出:
标题
可以使用title
函数设置标题.
例子
定义:
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.plot(x, y)
plt.title("Test")
plt.xlabel("x - label")
plt.ylabel("x - label")
plt.show()
输出:
网格线
通过grid
函数可以设置图标中的网格线. 格式如下:
参数说明:
<b>
: 可选, 默认为None
, 可以设置布尔值,True
为显示网格线,False
为不显示网格线-
<which>
: 可选, 可选值有major
,minor
和both
, 表示应用于主网格线还是副网格线注意
若要看见副网格线, 需要开启副刻度:
plt.minorticks_on()
. -
<axis>
: 可选, 设置显示哪个方向的网格线, 可选值有both
,x
或y
<**kwargs>
: 可选, 设置网格样式
可选参数可以设置颜色, 粗细, 样式:
例子
定义:
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.title("grid() test")
plt.xlabel("x - label")
plt.ylabel("y - label")
plt.plot(x, y)
plt.grid(color="r", linestyle="--", linewidth=0.5)
plt.show()
输出:
绘制多图
可以使用subplot
和subplots
函数来绘制多个子图.
区别是:
subplot()
: 用于逐个创建子图, 只存在一个图形对象subplots()
: 用于一次性创建整个子图的网格, 并返回一个包含图形对象和子图数组的元组, 多次调用创建多个图形对象
subplot
函数
该函数将区域分成<nrows>
行和<ncols>
列, 从左到右, 从上到下对每个子区域进行编号1...N
, 编号可以通过<index>
来设置.
例子
定义:
# plot 1:
xpoints = np.array([0, 6])
ypoints = np.array([0, 100])
plt.subplot(1, 2, 1)
plt.plot(xpoints,ypoints)
plt.title("plot 1")
# plot 2:
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.subplot(1, 2, 2)
plt.plot(x,y)
plt.title("plot 2")
plt.suptitle("subplot test")
plt.show()
输出:
定义:
# plot 1:
x = np.array([0, 6])
y = np.array([0, 100])
plt.subplot(2, 2, 1)
plt.plot(x,y)
plt.title("plot 1")
# plot 2:
x = np.array([1, 2, 3, 4])
y = np.array([1, 4, 9, 16])
plt.subplot(2, 2, 2)
plt.plot(x,y)
plt.title("plot 2")
# plot 3:
x = np.array([1, 2, 3, 4])
y = np.array([3, 5, 7, 9])
plt.subplot(2, 2, 3)
plt.plot(x,y)
plt.title("plot 3")
# plot 4:
x = np.array([1, 2, 3, 4])
y = np.array([4, 5, 6, 7])
plt.subplot(2, 2, 4)
plt.plot(x,y)
plt.title("plot 4")
plt.suptitle("subplot test")
plt.show()
输出:
subplots
函数
该函数会一次性生成多个子图并返回一个图形对象+由子图对象构成的元组.
例子
定义:
# 创建一些测试数据
x = np.linspace(0, 2*np.pi, 400)
y = np.sin(x**2)
# 创建一个图形对象和一个子图: 图1
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')
# 创建一个图形对象和两个子图: 图2
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
ax1.plot(x, y)
ax1.set_title('Sharing Y axis')
ax2.scatter(x, y)
# 创建一个图形对象和四个子图: 图3
fig, axs = plt.subplots(2, 2, subplot_kw=dict(projection="polar"))
axs[0, 0].plot(x, y)
axs[1, 1].scatter(x, y)
plt.show()
输出:
-
Matplotlib Pyplot | 菜鸟教程. (n.d.). Retrieved June 30, 2024, from https://www.runoob.com/matplotlib/matplotlib-pyplot.html ↩
-
Matplotlib 绘图标记 | 菜鸟教程. (n.d.). Retrieved June 30, 2024, from https://www.runoob.com/matplotlib/matplotlib-marker.html ↩
-
Matplotlib 绘图线 | 菜鸟教程. (n.d.). Retrieved June 30, 2024, from https://www.runoob.com/matplotlib/matplotlib-line.html ↩
-
Matplotlib 网格线 | 菜鸟教程. (n.d.). Retrieved June 30, 2024, from https://www.runoob.com/matplotlib/matplotlib-grid.html ↩
-
Matplotlib 绘制多图 | 菜鸟教程. (n.d.). Retrieved June 30, 2024, from https://www.runoob.com/matplotlib/matplotlib-subplots.html ↩