Come è possibile combinare un grafico a dispersione 3D con un grafico di superficie 3D mantenendo trasparente il grafico di superficie in modo da poter vedere ancora tutti i punti?Combinazione di un grafico a dispersione con trama di superficie
risposta
Per combinare vari tipi di grafici in uno stesso grafico si dovrebbe utilizzare la funzione
plt.hold (True).
Il codice seguente traccia un grafico a dispersione 3D con una trama superficie 3D:
from mpl_toolkits.mplot3d import *
import matplotlib.pyplot as plt
import numpy as np
from random import random, seed
from matplotlib import cm
fig = plt.figure()
ax = fig.gca(projection='3d') # to work in 3d
plt.hold(True)
x_surf=np.arange(0, 1, 0.01) # generate a mesh
y_surf=np.arange(0, 1, 0.01)
x_surf, y_surf = np.meshgrid(x_surf, y_surf)
z_surf = np.sqrt(x_surf+y_surf) # ex. function, which depends on x and y
ax.plot_surface(x_surf, y_surf, z_surf, cmap=cm.hot); # plot a 3d surface plot
n = 100
seed(0) # seed let us to have a reproducible set of random numbers
x=[random() for i in range(n)] # generate n random points
y=[random() for i in range(n)]
z=[random() for i in range(n)]
ax.scatter(x, y, z); # plot a 3d scatter plot
ax.set_xlabel('x label')
ax.set_ylabel('y label')
ax.set_zlabel('z label')
plt.show()
risultato:
http://s9.postimage.org/ge0wb8kof/3d_scatter_surface_plt.gif
potete vedere alcuni altri esempi con grafici 3D qui:
http://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html
Ho cambiato i colori della trama di superficie per m il valore predefinito per una colormap "caldo" al fine di distinguere i colori delle due piazzole - ora, è visto che la trama di superficie sostituisce il grafico a dispersione, indipendentemente dall'ordine ...
EDIT: Per risolvere quel problema, dovrebbe essere usata la trasparenza nella colormap del grafico di superficie; aggiungendo il codice in: Transparent colormap e cambiare la linea:
ax.plot_surface(x_surf, y_surf, z_surf, cmap=cm.hot); # plot a 3d surface plot
a
ax.plot_surface(x_surf, y_surf, z_surf, cmap=theCM);
otteniamo:
http://s16.postimage.org/5qiqn0p5h/3d_scatter_surface_plt_transparent.gif
Utilizzando l'esempio di siluaty; invece di usare la trasparenza tramite il comando cmap = theCM, puoi regolare il valore alfa. Questo potrebbe farti ciò che vuoi?
ax.plot_surface(x_surf, y_surf, z_surf, cmap=cm.hot, alpha=0.2)
Volevo sapere se c'era qualcosa come alfa e il tuo commento lo ha reso evidente! – user89
- 1. Superficie di miscelazione e diagramma a dispersione in un unico grafico 3D
- 2. Grafico a dispersione matplotlib con errore sconosciuto
- 3. Grafico a dispersione con dati scalari
- 4. Come animare un grafico a dispersione?
- 5. simple R interpolazione 3d/trama di superficie
- 6. Matlab: trama di superficie non funzionante
- 7. Come applicare contemporaneamente colore/forma/dimensione in un grafico a dispersione usando trama?
- 8. Come creare un grafico a dispersione 3D in Python?
- 9. 3D trama di superficie da matrice 2D
- 10. Excel: come posso creare un grafico a dispersione con i colori di una terza colonna?
- 11. Limiti di asse per il grafico a dispersione - Matplotlib
- 12. linea + grafico a dispersione in nvd3
- 13. Alternativa al grafico della superficie di una superficie ComponentOne 3D
- 14. matplotlib: set di dati multipli sulla stessa dispersione trama
- 15. Tracciamento di punti dati a tre tuple in una trama di superficie/contorno usando matplotlib
- 16. trama di un documento tfidf grafico 2D
- 17. aggiungi una linea di regressione logaritmica a un grafico a dispersione (confronto con Excel)
- 18. Tracciando un grafico superficie 3D con la mappa profilo di sovrapposizione, utilizzando R
- 19. Come assegnare una scala di colori a una variabile in un grafico a dispersione 3D?
- 20. Grafico del tipo di dispersione in Dygraphs?
- 21. Ottava, come salvare un grafico di trama?
- 22. Annota grafico a dispersione da un dataframe panda
- 23. Riga di regressione lineare nel grafico a dispersione MATLAB
- 24. Come assegnare un colore a ogni classe nel grafico a dispersione in R?
- 25. Python, Matplotlib, trama di dispersione, Cambia colore sul punto cliccato
- 26. Tracciare trama di superficie mplot3d/axes3D xyz con scala di registro?
- 27. che collega tutti i punti (possibile conbination) in dispersione trama
- 28. Come creare un grafico 3d/superficie con JavaFX?
- 29. Utilizzo del metodo di transizione D3 con dati per il grafico a dispersione
- 30. tracciamento di due vettori di dati su un grafico a dispersione GGPLOT2 utilizzando R
Un lavoro intorno a questo è di (a mano) dividere i dati nel diagramma di dispersione nella metà (i dati sopra del piano ed i dati di seguito), e quindi tracciano le tre cose nel giusto ordine. vedi http://stackoverflow.com/questions/14824893/how-to-draw-diagrams-like-this/14825951#14825951 – tacaswell
Se hai bisogno del rendering 3D "vero", guarda a mayavi da enthought. http://code.enthought.com/projects/mayavi/ – tacaswell
@tcaswell Ho notato che anche cambiando l'ordine dei grafici, la superficie appare sempre in primo piano, ed è strano ... (anche lo zorder non funziona) Ecco perché ho scelto di usare i lucidi. –