跳至主要內容

Matplotlib 3D图

blacklad大约 2 分钟PythonPythonMatplotlib

Matplotlib 3D图

3D 图表 是用于展示三个变量之间关系的图表。

3D 散点图

用于展示三个变量之间的离散数据点。

import matplotlib.pyplot as plt
import numpy as np

# 数据
x = np.random.rand(50)
y = np.random.rand(50)
z = np.random.rand(50)

# 创建一个新的图形
fig = plt.figure()

# 添加一个3D子图
ax = fig.add_subplot(111, projection='3d')

# 创建3D散点图
ax.scatter(x, y, z, c='r', marker='o')

# 添加标题和标签
ax.set_title('3D Scatter Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')

# 显示图表
plt.show()
image-20241118204516318
image-20241118204516318

3D 线图

用于展示三个变量之间的连续数据点。

import matplotlib.pyplot as plt
import numpy as np

# 数据
t = np.linspace(0, 10, 100)
x = np.sin(t)
y = np.cos(t)
z = t

# 创建一个新的图形
fig = plt.figure()

# 添加一个3D子图
ax = fig.add_subplot(111, projection='3d')

# 创建3D线图
ax.plot(x, y, z, c='b')

# 添加标题和标签
ax.set_title('3D Line Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')

# 显示图表
plt.show()
image-20241118205446322
image-20241118205446322

3D 表面图

用于展示三个变量之间的连续函数或数据网格。

import matplotlib.pyplot as plt
import numpy as np

# 数据
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))

# 创建一个新的图形
fig = plt.figure()

# 添加一个3D子图
ax = fig.add_subplot(111, projection='3d')

# 创建3D表面图
surf = ax.plot_surface(x, y, z, cmap='viridis')

# 添加颜色条
fig.colorbar(surf)

# 添加标题和标签
ax.set_title('3D Surface Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')

# 显示图表
plt.show()
image-20241118205507006
image-20241118205507006

3D 等高线图

用于展示三维空间中的等高线。

import matplotlib.pyplot as plt
import numpy as np

# 数据
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))

# 创建一个新的图形
fig = plt.figure()

# 添加一个3D子图
ax = fig.add_subplot(111, projection='3d')

# 创建3D等高线图
contour = ax.contour3D(x, y, z, 50, cmap='viridis')

# 添加颜色条
fig.colorbar(contour)

# 添加标题和标签
ax.set_title('3D Contour Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')

# 显示图表
plt.show()
image-20241118205532382
image-20241118205532382

代码中的 cmap 为颜色映射:

  • Viridis (cmap='viridis'):从暗绿色到亮黄色的渐变,适合大多数数据集,因为它在亮度和饱和度上变化均匀,对色盲友好。
  • Plasma (cmap='plasma'):从深紫色到亮黄色的渐变。
  • Inferno (cmap='inferno'):从暗红色到亮黄色的渐变。
  • Magma (cmap='magma'):从暗红色到亮橙色的渐变。
  • Blues (cmap='Blues'):从白色到蓝色的渐变。
  • Reds (cmap='Reds'):从白色到红色的渐变。
  • Greens (cmap='Greens'):从白色到绿色的渐变。
  • Greys (cmap='Greys'):从黑色到白色的渐变。
上次编辑于:
贡献者: blacklad