python - 将等高线从一个图形投影到另一个图形
问题描述
我想将轮廓线从一个图形投影到另一个图形(使用相同的 x,y 参考系统)。我希望将其投影到第二个图中的曲面图上,而不是固定平面上。
更新:有一个解决方法;通过使用该contour.allsegs
命令,您可以获得包含轮廓线的 x,y 坐标的数组列表,然后您可以使用它来预处理第二个图形的数据。
但是:这只有效,因为我知道第二个表面的数学表示。这意味着我可以根据公式使用第一位数轮廓线的 x,y 值简单地计算 z 值。
import numpy as np
import matplotlib.pyplot as plt
X,Y = np.meshgrid(np.arange(0,5,1/5), np.arange(0,5,1/5))
Z1 = np.sin(X)+np.cos(Y)
Z2 = X+Y
fig = plt.figure(figsize=plt.figaspect(0.5))
ax1 = fig.add_subplot(1, 2, 1, projection='3d',title='fig1')
surf1 = ax1.plot_surface(X, Y, Z1, alpha=0.2)
contour1 = ax1.contour(X, Y, Z1)
segs=contour1.allsegs
ax2 = fig.add_subplot(1, 2, 2, projection='3d',title='fig2')
surf2 = ax2.plot_surface(X, Y, Z2, alpha=0.2)
for i in range(len(segs)):
if segs[i]:
plt.plot(segs[i][0][:,0],segs[i][0][:,1],[x+y for x,y in zip(segs[i][0][:,0],segs[i][0][:,1])])
if len(segs[i]) >= 2:
plt.plot(segs[i][1][:,0],segs[i][1][:,1],[x+y for x,y in zip(segs[i][1][:,0],segs[i][1][:,1])])
plt.show()
导致:
是否有另一种(简单的)方法可以将轮廓线
fig1
投影到fig2
(可能是mpl
我缺少的内置函数)的表面上?我怎样才能进一步开发上述方法,以便能够将它与我不知道其数学表示的表面一起使用,而是从文件中获得一个 XYZ 数据集?
非常欢迎任何提示或解决方案的替代方法!
解决方案
推荐阅读
- typescript - 无论如何在 Nest.js 中使用 Fastify 获取请求、响应的类型接口
- vue.js - Vue CLI 4 - Vuetfiy,scss 变量之间的冲突
- mysql - mysql。在“some text .../.../.../ and more”中全文搜索“some text ... and more”
- javascript - 如何使用循环在数组中求和?
- node.js - 使用和保护rabbitmq mqtt websocket并在浏览器中使用
- konvajs - 如何在 Konvajs React 中模拟像 Object-Fit Cover 这样的 CSS?
- android - Android 上 3D 安全支付的 Webview 安全性
- python - 熊猫根据条件为新列添加价值
- here-api - 如何验证我的应用程序是否可以访问 Here geocoder api?
- angular - 错误:“找不到带有路径的控件:'dispositivosForm'”