1. 简单画图
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-1,1,50)
y=2*x+2
plt.plot(x,y)
plt.show()
2. 多窗口figure
每次调用
figure()
函数都会生成一个新窗口,后续的plot()
都会在此figure中
2.1. figure()参数
- num: 窗口名的序号,即“figure 1”, “figure 2”...“figure num”
- figsize: tuple调整大小
3. plot划线函数
3.1. 参数
- color: "red"
- linewidth: 1.0是默认
- linestyle
- “--”: 虚线
3.2. 示例代码
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-1, 1, 20)
y1 = x * 2 + 1
# 第一个窗口
plt.figure()
plt.plot(x, y1)
# 第二个窗口
plt.figure(num=3, figsize=(8, 6))
y2 = x * x + 1
plt.plot(x, y2)
plt.plot(x, y1, color="red", linewidth=3, linestyle="--")
plt.show()
4. 修改坐标轴参数
- 范围:
plt.xlim(a,b)
- 名称:
plt.xlabel("x axis")
- 重新标记:
plt.xtick([...],可选:[...])
4.1. 示例代码
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-1, 1, 20)
y1 = x * 2 + 1
plt.figure()
plt.plot(x, y1)
# 坐标轴范围
plt.xlim(0, 2)
plt.ylim(0, 4)
# 坐标轴名称
plt.xlabel("I am x axis")
plt.ylabel("I am y axis")
# 坐标轴重新标号
x_tick = np.linspace(0, 2, 10)
plt.xticks(x_tick) # 直接用数字显示
y_tick = np.linspace(0, 4, 3)
y_name = ["bad", "normal", "good"]
plt.yticks(y_tick, y_name) # 命名显示
plt.show()
5. 添加图例plt.legend()
图例显示的名称为
plot(label="name")
函数label参数的值
5.1. 参数
- 指定显示位置: loc
- upper/lower
- right/left
5.2. 示例代码
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-3, 3, 50)
y1 = x * 2 + 1
y2 = x ** 2
plt.figure()
plt.plot(x, y1, label="y1")
plt.plot(x, y2, label="y2")
plt.legend(loc="upper left")
plt.show()
6. 多图显示
6.1. 多图合一
- plt.subplot(m, n, x): 将整个figure分为m,n格,接下来的plot在x格
- 示例代码
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-3, 3, 50)
y1 = x * 2 + 1
y2 = x ** 2
y3 = x ** 3
plt.subplot(2, 2, 1)
plt.plot(x, y1, label="y1")
plt.legend(loc="upper left")
plt.subplot(2, 2, 2)
plt.plot(x, y2, label="y2")
plt.legend(loc="upper left")
plt.subplot(2, 2, 3)
plt.plot(x, y3, label="y3")
plt.legend(loc="upper left")
plt.show()
7. 绘制动态图
- 知乎文章: 使用交互模式->清空->再绘的方法
- 关于清空:
-
plt.cla()
clears an axis, i.e. the currently active axis in the current figure. It leaves the other axes untouched. -
plt.clf()
clears the entire current figure with all its axes, but leaves the window opened, such that it may be reused for other plots. -
plt.close()
closes a window, which will be the current window, if not specified otherwise.
-