我正在尝试使用 matplotlib 生成 3D 图形,其中 xy 平面是图像,然后在顶部绘制一些 3D 轨迹(该部分工作正常)。问题是,即使我导入的 PNG 使用 imshow 显示得很好,即使我可以在 3D 轴上绘制图像,如果我只使用食谱中的一个示例,我的图像只是显示为一个无特征的黑盒子。我确定我错过了一些小东西 - 在此先感谢!
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D, art3d
from pylab import ogrid
import matplotlib.pyplot as plt
plt.ioff()
fig = plt.figure()
ay=fig.add_subplot(2,1,1)
rawim=plt.imread(r'G:\Path\myimage.png')
ay.imshow(rawim,cmap='gray')
ax=fig.add_subplot(2,1,2,projection='3d')
x,y= ogrid[0:rawim.shape[0],0:rawim.shape[1]]
ax.plot_surface(x,y,0,rstride=5,cstride=5,facecolors=rawim,cmap='gray')
ax.view_init(elev=45, azim=12)
plt.show()
输出是这样的(编辑以包含图像)。
PS 在 Spyder for Python 2.75 中运行 Matplotlib 1.2.1
编辑添加-我主要是从这篇文章中建模我的方法,所以如果不是
rawim=plt.imread(r'G:\Path\myimage.png')
我用
from matplotlib.cbook import get_sample_data
fn = get_sample_data("lena.png", asfileobj=False)
rawim=read_png(fn)
它完美地工作。我已经尝试了几种 PNG 输出,产生了几种不同的方式,但没有爱。是的,它们是 0-1 之间的灰度。