Matplotlib 3D Contours

Matplotlib 3D Contours

参考:matplotlib 3d contours

Matplotlib是一个强大的Python 2D/3D绘图库,它可以生成出版质量级别的图形。它可以通过简单的界面生成复杂的图表。在本文中,我们将重点介绍如何使用Matplotlib来创建3D等高线图(Contours)。3D等高线图是一种用来表示三维空间中函数值的图表,通过等高线可以直观地看出函数值在空间中的变化趋势。

基础3D等高线图

首先,我们从最基础的3D等高线图开始。为了创建3D图形,我们需要从mpl_toolkits.mplot3d导入Axes3D。以下是一个简单的示例,展示了如何创建一个基础的3D等高线图。

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

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()
ax = fig.add_subplot(111, projection='3d')
ax.contour3D(x, y, z, 50)
ax.set_title('3D Contour - how2matplotlib.com')
plt.show()

Output:

Matplotlib 3D Contours

自定义等高线颜色和样式

接下来,我们将展示如何自定义等高线的颜色和样式。通过调整contour3D函数的参数,可以改变等高线的颜色、线型等。

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

x = np.linspace(-6, 6, 100)
y = np.linspace(-6, 6, 100)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.contour3D(x, y, z, 50, cmap='viridis')
ax.set_title('Customized 3D Contour - how2matplotlib.com')
plt.show()

Output:

Matplotlib 3D Contours

添加色标

为了更好地理解等高线图中的颜色代表的含义,我们可以添加一个色标来表示不同颜色对应的函数值。

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

x = np.linspace(-6, 6, 100)
y = np.linspace(-6, 6, 100)
x, y = np.meshgrid(x, y)
z = np.cos(np.sqrt(x**2 + y**2))

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
contour = ax.contour3D(x, y, z, 50, cmap='coolwarm')
fig.colorbar(contour, ax=ax, shrink=0.5, aspect=5)
ax.set_title('3D Contour with Colorbar - how2matplotlib.com')
plt.show()

Output:

Matplotlib 3D Contours

绘制等高线投影

有时候,我们希望在3D等高线图的底部添加等高线的投影,以便更好地理解等高线在二维平面上的分布。

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

x = np.linspace(-6, 6, 100)
y = np.linspace(-6, 6, 100)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.contour3D(x, y, z, 50, cmap='inferno')
ax.contour(x, y, z, zdir='z', offset=-2, cmap='inferno')
ax.set_title('3D Contour with Projection - how2matplotlib.com')
plt.show()

Output:

Matplotlib 3D Contours

使用不同的颜色映射

Matplotlib提供了多种颜色映射(colormap),我们可以通过选择不同的颜色映射来改变等高线图的外观。

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

x = np.linspace(-6, 6, 100)
y = np.linspace(-6, 6, 100)
x, y = np.meshgrid(x, y)
z = np.cos(np.sqrt(x**2 + y**2))

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.contour3D(x, y, z, 50, cmap='plasma')
ax.set_title('3D Contour with Different Colormap - how2matplotlib.com')
plt.show()

Output:

Matplotlib 3D Contours

调整视角和坐标轴

在3D图形中,调整视角和坐标轴可以帮助我们更好地理解数据的分布。以下是如何调整视角和坐标轴的示例。

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

x = np.linspace(-6, 6, 100)
y = np.linspace(-6, 6, 100)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.contour3D(x, y, z, 50, cmap='magma')
ax.view_init(elev=45, azim=45)
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.set_zlabel('Z axis')
ax.set_title('3D Contour with Custom View - how2matplotlib.com')
plt.show()

Output:

Matplotlib 3D Contours

结论

本文通过多个示例代码详细介绍了如何使用Matplotlib创建3D等高线图。通过调整不同的参数和属性,我们可以生成各种样式和效果的3D等高线图,以满足不同的可视化需求。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程