2013-09-23 1 views
1

Я пытаюсь использовать matplotlib для создания 3D-фигур, где плоскость xy является изображением, а затем некоторые 3D-треки рисуются сверху (эта часть работает просто отлично). Проблема заключается в том, что хотя импортированный PNG показывает просто отлично с imshow, и хотя я могу построить изображение на трехмерной оси, если я просто использую пример из кулинарной книги, мое изображение просто появляется как безликий черный ящик. Я уверен, что мне не хватает чего-то маленького - спасибо заранее!Matplotlib-Imported PNG не будет отображаться в 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() 

Выход выходит как это (отредактировано, чтобы включить изображение). enter image description here
Запуск Matplotlib 1.2.1 в Spyder для Python 2.75 PS

отредактирован адд я был в значительной степени моделирования мой подход от 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

Не могли бы вы поместить указатель на соответствующий рабочий стол для приготовления пищи? – Evert

+0

Кажется, все в порядке. Вы пытались использовать разные изображения? Кроме того, ваши значения изображений плавают между 0 и 1? –

ответ

0

Вы должны использовать явный массив цветов для facecolors. Вы хотите что-то имеющее форму (Nx, Ny, 4), где размер «4» имеет значения RGBA. Также избавьтесь от cmap = 'gray' в вызове plot_surface.

Смежные вопросы