### 使用 Python Matplotlib 和 Plotly 库绘制 3D 图形和等高线图
#### Matplotlib 绘制 3D 立体图形与等高线图
对于三维立体图形以及等高线图的绘制,`matplotlib` 提供了 `mplot3d` 工具包来支持这些功能。下面展示如何利用此工具包实现目标。
首先安装必要的库:
```bash
pip install matplotlib numpy
```
接着通过以下代码片段演示具体的绘图过程:
导入所需模块并准备数据集:
```python
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
x = np.outer(np.linspace(-2, 2, 30), np.ones(30))
y = x.copy().T # transpose
z = np.cos(x ** 2 + y ** 2)
surf = ax.plot_surface(x, y, z, cmap='viridis', edgecolor='none')
fig.colorbar(surf, shrink=0.5, aspect=5) # 添加颜色条
plt.show()
```
上述代码展示了如何创建一个简单的三维表面图[^1]。
为了绘制等高线图,则可以采用如下方式:
```python
X, Y = np.meshgrid(np.arange(-5, 5, .2), np.arange(-5, 5, .2))
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
plt.contourf(X, Y, Z, levels=np.linspace(Z.min(), Z.max(), 8)) # 设置等高线条数
plt.colorbar(); # 显示颜色条
plt.title('Contour Map');
plt.xlabel('Longitude')
plt.ylabel('Latitude')
plt.show()
```
这段脚本实现了带有色彩填充效果的二维等高线地图绘制[^2]。
#### Plotly 实现更高级别的交互式图表
Plotly 是另一个强大的可视化库,在处理复杂的数据表示方面具有优势,特别是当涉及到动态更新或互动性强的应用场景时更为出色。以下是使用 Plotly 进行相同操作的方法简介。
先确保已安装好所需的软件包:
```bash
pip install plotly pandas
```
然后按照下列指导完成相应类型的图表制作:
构建基础环境及加载必要组件:
```python
import plotly.graph_objects as go
import numpy as np
# 创建网格化坐标矩阵
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
r = np.sqrt(X**2 + Y**2)
Z = np.sin(r)
data=[go.Surface(z=Z)]
layout=dict(title="Interactive Surface", scene=dict(aspectratio=dict(x=1, y=1, z=0.7),
camera_eye=dict(x=-1.7, y=-1.7, z=0.7)))
fig_dict={"data": data,"layout": layout}
fig = go.Figure(fig_dict)
fig.update_layout(scene_aspectmode='manual',
width=700,
height=700,)
fig.show()
```
以上实例说明了怎样借助 Plotly 构建具备良好用户体验特性的三维曲面模型[^4]。
针对等高线图而言,只需稍作调整即可得到满意的结果:
```python
trace = go.Contour(
z=[[10, 10.625, 12.5, 15.625, 20],
[5.625, 6.25, 8.125, 11.25, 15.625],
[2.5, 3.125, 5., 8.125, 12.5],
[-0.625, 0, 3.125, 6.25, 10.625],
[-2.5, -0.625, 1.25, 3.125, 6.25]],
colorscale='Viridis'
)
data = [trace]
fig = go.Figure(data=data)
fig.update_layout(title_text='Filled Contours with Custom Colorscale')
fig.show()
```
该部分代码呈现了一个自定义配色方案下的填充分割等高线图像[^5]。