2012-11-26 21 views
6

Ho una trama 3d di linee generate da matplotlib. Voglio sovrapporre un'immagine a una specifica xy (o yz, xz) fetta. Come faccio a farlo usando Python? Grazie.Sovrapposizione immagini nella trama 3d usando python

Ho un semplice codice grafico 3D come:

fig = plt.figure(1),<br> 
ax = Axes3D(fig)<br> 
ax.plot(f[:,0], f[:,1], f[:,2], color='r') 

Ho anche un'immagine "Im" (una matrice 2D), quindi ho bisogno di qualcosa di simile a:

ax.overlay(Im, slice='xy', sliceNo=10) 
+0

Cosa hai provato finora? Si prega di includere il codice sorgente nella domanda. –

+0

Non sono riuscito a trovare nessuna opzione. – ahmethungari

risposta

19

Ho fatto un 3d overlay trama superficie in cima ad un'immagine di sfondo una volta:

3d surface plot on top of background image

Se questo è simile per quello che vuoi, potrei provare a fare un esempio funzionante.

In alternativa, se si desidera solo per visualizzare un'immagine nello spazio 3D, è possibile utilizzare una trama superficiale:

from pylab import * 
from mpl_toolkits.mplot3d import Axes3D 
from matplotlib.cbook import get_sample_data 
from matplotlib._png import read_png 
fn = get_sample_data("lena.png", asfileobj=False) 
img = read_png(fn) 
x, y = ogrid[0:img.shape[0], 0:img.shape[1]] 
ax = gca(projection='3d') 
ax.plot_surface(x, y, 10, rstride=5, cstride=5, facecolors=img) 
show() 

Naturalmente, i valori stride può essere diminuito a 1 per una migliore qualità dell'immagine, ma poi estrazione avrà moooolto =)

immagine risultante dal codice di cui sopra:

enter image description here

+0

il secondo esempio combinato con trama 3d di curve è quello che volevo. molte grazie. Penso di poter tracciare le curve sull'immagine semplicemente usando l'opzione hold (True) ... – ahmethungari

+0

Grazie è utile per me. Ma, ho una domanda, c'è un modo per far posizionare un'immagine sotto la trama dei dati 3d? In [here] (http://stackoverflow.com/questions/22959472), un'immagine continua a fluttuare su 'bar3d'. – Jeon

+0

@torfbolt Mi piacerebbe saperne di più sul primo esempio. Ho un'immagine che voglio rimanere sul piano x, y (z = 0). In cima a quell'immagine sarà la mia curva 3D. Come farlo? – FaCoffee

Problemi correlati