2 用matplotlib 画多个函数图形
2.1 在一个画布里画多个图形
(1张画布,1个坐标轴系,多个图形叠在一起)
import numpy as np
import matplotlib.pyplot as plt
fig1=plt.figure(num=1)
x=np.linspace(-5,5, 10)
y=x*2+1
y2=x**2
# 绘图
plt.plot(x, y)
plt.plot(x, y2)
# 显示图像
plt.show()
2.2 在多个画布里,分别画1个图形
(多张画布,多个坐标轴系,分别包含1个图形)
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(-5,5, 10)
fig1=plt.figure(num=1,figsize=(3,3))
y=x*2+1
# 绘图
plt.plot(x, y)
#新开一个画布
fig2=plt.figure(num=2,figsize=(5, 5))
y2=x**2
# 绘图
plt.plot(x, y2)
# 显示图像
plt.show()
2.3 一个画布里作图多个子图,且按表格排列好
(多张画布,多个坐标轴系,分别包含1个图形,且按内部序号排列)
2.3.1 用plt.subplot()
方式绘制多子图
plt.subplot()
方式绘制多子图,只需要传入简单几个参数即可:plt.subplot(rows, columns, current_subplot_index)
- 形如
plt.subplot(2, 2, 1)
,其中:
rows
表示最终子图的行数;columns
表示最终子图的列数;current_subplot_index
表示当前子图的索引;- 这几个参数是可以连写在一起的,同样可以被识别
- 例如:上面的
plt.subplot(2, 2, 1),写成
plt.subplot(221)
,两者是等价的。
import numpy as np
import matplotlib.pyplot as plt
# 子图1,散点图
plt.subplot(2, 2, 1)
plt.scatter(np.linspace(-2, 2, 5), np.random.randn(5))
# 子图2,折线图+网格
plt.subplot(2, 2, 2)
plt.plot(np.linspace(-2, 2, 5), np.random.randn(5))
plt.grid(True)
# 子图3,柱状图
plt.subplot(2, 2, 3)
x = np.linspace(0, 5, 5)
plt.bar(x, np.random.random(5))
plt.xticks(np.arange(0, 6))
# 子图4,饼图
plt.subplot(2, 2, 4)
plt.pie(np.random.random(5), labels=list("ABCDE"))
plt.show()
7 下面是不同类型的图形
6 比如 散点图 sactter
import numpy as np
import matplotlib.pyplot as plt
# 散点图
# x, y
x = np.random.normal(0, 1, 20)
y = np.random.normal(0, 1, 20)
# 绘制散点图
plt.scatter(x, y, s=25, alpha=0.75)
plt.xlabel("X")
plt.ylabel("Y")
# 显示图像
plt.show()
7 直方图
import numpy as np
import matplotlib.pyplot as plt
# 直方图
# x, y
size = 12
x = np.arange(size)
y = np.random.uniform(0, 1, size) * 10
# 直方图
plt.bar(x, y, edgecolor="white")
plt.bar(x, -y, facecolor="#999999", edgecolor="white")
# 设置坐标
plt.xticks(x)
plt.yticks(np.linspace(-12, 12, 13))
# 显示数值
for (X, Y) in zip(x, y):
plt.text(x=X, y=Y+0.2, s="%.1f" % Y, ha="center")
print(X, Y)
# 显示图像
plt.show()