Python 3D绘图很简单
Python 中的 3-D 绘图很重要,可以更丰富、更全面地了解复杂信息,也让绘图更美观。
需要以下库:
-
matplotlib
:用于创建可视化。 -
numpy
:用于数值运算和数据操作。 -
plotly
:用于创建交互式绘图(用于 3-D 极坐标图)。
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import plotly.graph_objects as go
用于绘图的数据包括:
-
x
和y
:介于 -5 和 5 之间的线性间距值。 -
X
和Y
:从小x和u创建的 Meshgrid 。 -
Z
:应用于 meshgrid 的 sine 函数。 -
z
:应用于x
的正弦函数。 -
U
和V
:向量场u和v的网格和函数。
以上只是示例数据,可以换成自己的。
3D线图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot(x, y, z, label='3-D Line')
ax.set_title('3-D Line Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')
ax.legend()
plt.show()
3D线图
3D散点图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, z, label='3-D Scatter', color='r')
ax.set_title('3-D Scatter Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')
ax.legend()
plt.show()
3D散点
3D曲面图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, cmap='viridis')
ax.set_title('3-D Surface Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')
plt.show()
3D曲面
3D线框图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_wireframe(X, Y, Z, color='black')
ax.set_title('3-D Wireframe Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')
plt.show()
3D线框
3D等值线图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.contour3D(X, Y, Z, 50, cmap='binary')
ax.set_title('3-D Contour Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')
plt.show()
3D等值线
3D柱状图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
xpos, ypos = np.meshgrid(np.arange(4), np.arange(4))
xpos = xpos.flatten()
ypos = ypos.flatten()
zpos = np.zeros_like(xpos)
dx = dy = 0.5
dz = np.random.rand(16)
ax.bar3d(xpos, ypos, zpos, dx, dy, dz, color='cyan')
ax.set_title('3-D Bar Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')
plt.show()
3D柱状图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
data = np.random.randn(1000)
hist, bins = np.histogram(data, bins=30)
ax.bar3d(bins[:-1], bins[:-1], np.zeros_like(hist), 1, 1, hist, color='purple')
ax.set_title('3-D Histogram')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')
plt.show()
3D柱状图
3D曲面图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_trisurf(X.flatten(), Y.flatten(), Z.flatten(), cmap='coolwarm')
ax.set_title('3-D Tri-Surface Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')
plt.show()
3D渐变曲面
3D网格图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_wireframe(X, Y, Z, color='green')
ax.set_title('3-D Mesh Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')
plt.show()
3D网格图
3D 填充等值线图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.contourf3D(X, Y, Z, 50, cmap='plasma')
ax.set_title('3-D Filled Contour Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')
plt.show()
3D填充等值线