如何在一个图中合并 python 中的表面图和箭袋图

How to combine a surface and quiver plot in python in one plot

我有以下代码生成一个曲面图,其中曲面作为相对于网格 X、Y 的 z 坐标给出。

此代码还生成矢量场图,作为相对于同一坐标系 X、Y 的单独图形。

有什么办法可以把这两个数字合二为一吗?向量场是在表面上还是在表面图的底部?

import numpy as np
import matplotlib.pyplot as plt
import grad_field
 # first create the plot of the elevation surface
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
LNG = np.linspace(lngmin,lngmax,samples1)
LAT = np.linspace(latmin,latmax, samples2)
X, Y = np.meshgrid(LNG,LAT)
ax.plot_surface(X, Y, elev_mat)
plt.show()
 
# now create the vector field plot of the gradients
[gradx,grady] = grad_field.grad_field(elev_mat)
fig1, ax1 = plt.subplots()
ax1.set_title('Arrows scale with plot width, not view')
ax1.quiver(X, Y, gradx, grady, units='xy' ,scale=2, color='red')
plt.show()

您可以通过 plt.subplots(nrows=1, ncols=1) 相互创建多个地块 next/below。看看 documentation 的例子。

如果您想在一个图中创建多个绘图,您可以通过 ax.twinx()ax.twiny() 共享 x 或 y 轴。