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:
自定义等高线颜色和样式
接下来,我们将展示如何自定义等高线的颜色和样式。通过调整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:
添加色标
为了更好地理解等高线图中的颜色代表的含义,我们可以添加一个色标来表示不同颜色对应的函数值。
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:
绘制等高线投影
有时候,我们希望在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提供了多种颜色映射(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:
调整视角和坐标轴
在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等高线图。通过调整不同的参数和属性,我们可以生成各种样式和效果的3D等高线图,以满足不同的可视化需求。