2015-05-13 4 views
5

C'è un modo per tracciare un file immagine su una superficie del grafico 3D usando Python?Come tracciare un file immagine su una superficie del grafico 3D usando Python? - Non tracciare un piano come piano

Ho visto un paio di modi per tracciare questo come un piano, ma vorrei che l'immagine coprisse la superficie della trama. È possibile?

+0

questa domanda potrebbe essere un po 'troppo ampia come è attualmente ... si potrebbe desiderare di aggiungere le informazioni: quale immagine? quale grafico? hai un esempio del risultato che stai cercando di ottenere? –

+0

Non con il tracciamento 3D di matplotlib. È possibile con Mayavi/mlab, tuttavia. Se vuoi, posso dare un esempio. –

+0

Ciao Julien, sto provando a fotografare un sito e poi lo copro su dati topografici. – SteveResearch

risposta

1

Dai uno sguardo alla risposta allo this question. Usano una z fissa, ma puoi sostituirla con i tuoi dati topografici per ottenere l'effetto desiderato.

4

È necessario modificare il colore della superficie in modo che sia il colore dell'immagine come in questo esempio suggerito da @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() 

Questo dà come risultato

enter image description here