【问题标题】:Matplotlib-Imported PNG won't show in 3D plotMatplotlib-Imported PNG 不会在 3D 图中显示
【发布时间】:2013-09-28 03:55:43
【问题描述】:

我正在尝试使用 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

编辑添加-我主要是从 this post 建模我的方法,所以如果不是

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 之间的灰度。

【问题讨论】:

  • 你能把指针指向相应的烹饪箱工作示例吗?
  • 这对我来说似乎很好用。您是否尝试过使用不同的图像?另外,您的图像值是否在 0 和 1 之间浮动?

标签: python 3d matplotlib plot


【解决方案1】:

您应该为 facecolors 使用显式颜色数组。 您想要具有形状 (Nx, Ny, 4) 的东西,其中“4”维度包含 RGBA 值。 另外,去掉 plot_surface 调用中的 cmap='gray'。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 2018-10-21
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    相关资源
    最近更新 更多