Matplotlib是python中开源的用于绘图的工具包,具有强大的数据可视化功能。
显示连续二维图像:
# 导入numpy和matplotlib包
# pyplot是matplotlib里的子模块,常用于画图
import numpy as np
import matplotlib.pyplot as plt
# 建立坐标系
fig = plt.figure()
# 生成-10到10间隔为0.1的等差数组
# 通过cos函数生成对应的y数组
x = np.arange(-10, 10, 0.1)
y = np.cos(x)
# 设置图像标题和x轴y轴的名字
plt.title('demo1')
plt.xlabel('X')
plt.ylabel('Y')
# 传入参数,画图
plt.plot(x, y)
# 显示出来
plt.show()
输出:
注:
如果不写plt.show()是显示不出来图像的。
显示离散二维图像:
# 导入numpy和matplotlib包
# pyplot是matplotlib里的子模块,常用于画图
import numpy as np
import matplotlib.pyplot as plt
# 建立坐标系
fig = plt.figure()
# 生成-10到10间隔为0.1的等差数组
# 通过cos函数生成对应的y数组
x = np.arange(-10, 10, 0.5)
y = np.cos(x)
# 设置图像标题和x轴y轴的名字
plt.title('demo2')
plt.xlabel('X')
plt.ylabel('Y')
# 传入参数,画图
# *表示用*画出来
# c表示是青色
plt.plot(x, y, '*c')
# 显示出来
plt.show()
输出:
注:
这里在plot时加入了新的参数,该参数用于表示我们用什么样的形式去画图。以下图表是其中一些字符的含义。还有很多字符有含义,如果大家感兴趣可以csdn一下。
字符 | 含义 |
---|---|
- | 实线 |
– | 短横线 |
-. | 点划线 |
: | 虚线 |
. | 点 |
, | 像素 |
* | 星型 |
o | 圆 |
b | 蓝 |
g | 绿 |
r | 红 |
c | 青 |
m | 品红 |
y | 黄 |
k | 黑 |
w | 白 |
显示图片
# 导入matplotlib包
# pyplot是matplotlib里的子模块,常用于画图
import matplotlib.pyplot as plt
# 读取图片,放入自己图片的名字
img = plt.imread('./test.png')
# 显示图片
plt.imshow(img)
# 显示出来
plt.show()
生成三维坐标系:
# 导入numpy和matplotlib包
# pyplot是matplotlib里的子模块,常用于画图
import numpy as np
import matplotlib.pyplot as plt
# 建立坐标系
fig = plt.figure()
# 设置图像的轴为3d
ax = plt.axes(projection='3d')
# 显示出来
plt.show()
# 导入numpy和matplotlib包
# pyplot是matplotlib里的子模块,常用于画图
import numpy as np
import matplotlib.pyplot as plt
# 建立坐标系
fig = plt.figure()
# 设置图像的轴为3d
ax = plt.axes(projection='3d')
x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)
# 将x,y变为形状一样的二维数组
x, y = np.meshgrid(x, y)
# np.exp(a)是e的a次方的意思
# x ** 2 表示x的平方
z = np.exp(100 - x ** 2 - y ** 2)
# 绘制图像, camp表示图形样式
ax.plot_surface(x, y, z, cmap='rainbow')
# 显示出来
plt.show()
输出:
注:
这里x,y,z都是二维数组。
如果大家搞不明白np.meshgrid(x, y),以下示例可以方便大家理解。
x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)
# 将x,y变为形状一样的二维数组
x, y = np.meshgrid(x, y)
print('x:\n', x)
print('y:\n', y)
输出:
x:
[[-5. -4.9 -4.8 ... 4.7 4.8 4.9]
[-5. -4.9 -4.8 ... 4.7 4.8 4.9]
[-5. -4.9 -4.8 ... 4.7 4.8 4.9]
...
[-5. -4.9 -4.8 ... 4.7 4.8 4.9]
[-5. -4.9 -4.8 ... 4.7 4.8 4.9]
[-5. -4.9 -4.8 ... 4.7 4.8 4.9]]
y:
[[-5. -5. -5. ... -5. -5. -5. ]
[-4.9 -4.9 -4.9 ... -4.9 -4.9 -4.9]
[-4.8 -4.8 -4.8 ... -4.8 -4.8 -4.8]
...
[ 4.7 4.7 4.7 ... 4.7 4.7 4.7]
[ 4.8 4.8 4.8 ... 4.8 4.8 4.8]
[ 4.9 4.9 4.9 ... 4.9 4.9 4.9]]
三维离散图像绘制示例
# 导入numpy和matplotlib包
# pyplot是matplotlib里的子模块,常用于画图
import numpy as np
import matplotlib.pyplot as plt
# 建立坐标系
fig = plt.figure()
# 设置图像的轴为3d
ax = plt.axes(projection='3d')
# 产生100个0~1的随机数,然后乘以20
z = 20 * np.random.random(100)
# 由z生成x,y
x = np.sin(z)
y = np.cos(z)
# 绘制散点图
ax.scatter3D(x, y, z)
# 显示出来
plt.show()