Matplotlib 创建3D图形

Matplotlib 创建3D图形

在科学可视化及数据分析中,可视化是一个重要的工具,帮助我们更好的理解数据和所描述的现象。Matplotlib是Python语言中一个很强大的绘图工具,能够绘制2D和3D图形。在此主题中,我们将讨论如何使用Matplotlib从3D Numpy数组创建3D图形。

阅读更多:Matplotlib 教程

安装Matplotlib

在开始创建3D图之前,需要先安装Matplotlib。在命令行中使用以下命令进行安装:

pip install matplotlib
Python

创建3D Numpy数组

为了从一个3D Numpy数组创建3D图形,我们需要先创建一个3D Numpy数组。以下是创建一个椎体的示例:

import numpy as np

N = 50
theta = np.linspace(0, 2*np.pi, N)
z = np.linspace(0, 1, N)
Theta, Z = np.meshgrid(theta, z)
X = (1-Z)*np.cos(Theta)
Y = (1-Z)*np.sin(Theta)
Z = Z
Python

在这个示例中,我们使用NumPy和构造函数创建了三个1D数组。我们使用这些数组创建了一个3D网格,表示一个椎体。在创建3D Numpy数组时,需要注意该数组的形状。通常,应该将形状设置为:

(m, n, k)
Python

其中,m,n和k是3D数组的维数。

创建3D图形

有很多使用Matplotlib创建3D图形的方法。以下是使用“mpl_toolkits.mplot3d”子包中的axes3d对象创建3D图形的示例:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(X, Y, Z, cmap='viridis')
plt.show()
Python

在这个示例中,我们使用“plt.figure”创建了一个新的图形对象。我们使用“fig.gca(投影 =’3d’)”方法创建一个3D“Axis”对象,“ax”。

“ax.plot_surface”方法绘制一个3D表面图形。我们需要提供三个输入数组:X,Y和Z数组。

我们还可以使用“ax.scatter”方法绘制散点图。以下是使用散点图创建3D图形的示例:

fig = plt.figure()
ax = fig.gca(projection='3d')
ax.scatter(X, Y, Z, c=Z, cmap='viridis')
plt.show()
Python

在这个示例中,我们使用“ax.scatter”方法绘制一个3D散点图。我们需要提供三个输入数组:X,Y和Z数组。此外,我们还使用“c”参数指定颜色数组。在这种情况下,我们使用Z数组作为颜色数组,使用“viridis”颜色映射。

自定义3D图形

当创建3D图形时,我们可以使用Matplotlib中的多个函数和方法自定义图形。以下是一些自定义3D图形的示例:

坐标轴范围和投影

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, cmap='viridis')
ax.set_xlim(-1, 1)
ax.set_ylim(-1, 1)
ax.set_zlim(0, 1)
ax.set_box_aspect([1,1,0.5])
ax.view_init(elev=30, azim=120)
plt.show()
Python

在这个示例中,我们使用“ax.set_xlim”和“ax.set_ylim”方法设置坐标轴的范围。我们使用“ax.set_zlim”方法设置z轴范围。此外,我们还使用“ax.set_box_aspect([1, 1, 0.5])”方法设置图形的长宽比。最后,我们使用“ax.view_init”方法设置视图角度。

标签和图例

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, cmap='viridis', label='Surface')
ax.scatter(X, Y, Z, c=Z, cmap='viridis', marker='.', label='Scatter')
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
ax.legend()
plt.show()
Python

在这个示例中,我们在表面图和散点图上使用“label”参数添加标签。我们使用“ax.set_xlabel”,“ax.set_ylabel”和“ax.set_zlabel”方法为每个坐标轴添加标签。最后,我们使用“ax.legend”方法添加一个图例。

改变颜色映射

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(X, Y, Z, c=Z, cmap='Blues', alpha=0.8)
plt.show()
Python

在这个示例中,我们使用“cmap”参数更改颜色映射。我们使用“alpha”参数调整散点图的透明度。

总结

在本主题中,我们介绍了如何使用Matplotlib从3D Numpy数组创建3D图形。我们讨论了创建3D Numpy数组的重要性,并演示了如何使用“mpl_toolkits.mplot3d”子包中的“axes3d”对象创建和自定义3D图形。我们希望这将有助于您更好地理解Matplotlib的功能,并创建具有良好可读性的3D可视化。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册