如何在一个图中合并 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 轴。
我有以下代码生成一个曲面图,其中曲面作为相对于网格 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 轴。