如何使用Python在三维图表面上绘制图像文件? - 不要作为平面绘制

9

如何使用Python在3D图表面上绘制图像文件?

我已经看到了一些将其作为平面绘制的方法,但我希望该图像能够覆盖在绘图表面上。这可能吗?


这个问题可能有点宽泛,你可能需要添加更多信息:什么图像?什么图表?你有想要实现的结果示例吗? - Julien Spronck
不使用matplotlib的3D绘图是不可能的。但是,使用Mayavi/mlab是可以实现的。如果您需要,我可以给您一个例子。 - Joe Kington
嗨,朱利安,我正在尝试拍摄一个场地,并将其覆盖在地形数据上。 - SteveResearch
Joe,如果你有的话,我非常想看一个例子。 - SteveResearch
2个回答

7

您需要将表面的颜色更改为与@ sarwar建议的示例中的图像颜色相同。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.cbook import get_sample_data
from matplotlib._png import read_png
import numpy as np

fn = get_sample_data("lena.png", asfileobj=False)
img = read_png(fn)

x, y = np.mgrid[0:img.shape[0], 0:img.shape[1]]

ax = plt.gca(projection='3d')
ax.plot_surface(x, y, np.sin(0.02*x)*np.sin(0.02*y), rstride=2, cstride=2,
                facecolors=img)
plt.show()

那将产生以下结果。 在此输入图片描述

1

看一下这个问题的答案。他们使用了一个固定的z值,但是你可以用你的地形数据替换它,以达到所需的效果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接