使用python在3d绘图中叠加图像

ahm*_*ari 10 python 3d matplotlib

我有一个由matplotlib生成的3d线图.我想在特定的xy(或yz,xz)切片上叠加图像.我如何使用python做到这一点?谢谢.

我有一个简单的3d绘图代码:

fig = plt.figure(1),<br>
ax = Axes3D(fig)<br>
ax.plot(f[:,0], f[:,1], f[:,2], color='r')
Run Code Online (Sandbox Code Playgroud)

我还有一个图像"Im"(一个2d数组),所以我需要这样的东西:

ax.overlay(Im, slice='xy', sliceNo=10)
Run Code Online (Sandbox Code Playgroud)

tor*_*olt 27

我在背景图像上做了一次三维表面图叠加:

3d在背景图象顶部的表面剧情

如果这与你想要的类似,我可以尝试用它做一个有效的例子.

或者,如果您只想在3d空间中显示图像,则可以使用曲面图:

from pylab import *
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.cbook import get_sample_data
from matplotlib._png import read_png
fn = get_sample_data("lena.png", asfileobj=False)
img = read_png(fn)
x, y = ogrid[0:img.shape[0], 0:img.shape[1]]
ax = gca(projection='3d')
ax.plot_surface(x, y, 10, rstride=5, cstride=5, facecolors=img)
show()
Run Code Online (Sandbox Code Playgroud)

当然,步幅值可以降低到1以获得更好的图像质量,但是然后绘制将需要loooong =)

从上面的代码得到的图像:

在此输入图像描述