Come visualizzare una funzione di densità 3D?


19

Qual è il modo migliore per visualizzare graficamente una funzione di densità 3D? Come in vorrei visualizzare ?

z=fX,Y(X,y)

Non necessario ma il Rcodice per questo sarebbe fantastico.


3
L'ho cambiato per essere più statistico.

1
Se c'è qualcosa che manca in quelle opzioni, sarà molto utile se puoi specificare di cosa si tratta e quali sono esattamente le tue esigenze in modo che possiamo trovare un tipo di visualizzazione che potrebbe adattarsi meglio a loro.
gung - Ripristina Monica

1
Quelli sono

3
@nico, non credo che questo sarebbe stato off-topic / più adatto per SO anche prima delle modifiche. La richiesta di codice è stata specificata come facoltativa e data-visualizationfa parte del nostro mandato.
gung - Ripristina Monica

1
@whuber, la domanda originale era semplicemente "visualizzare un set di dati 3D" (puoi vederlo nella cronologia delle modifiche). Ritengo che sia in tema, sebbene il tuo punto di vista sia chiaramente corretto.
gung - Ripristina Monica

Risposte:


25

Bene, ci sono quattro possibili approcci che mi vengono in mente (anche se sono sicuro che ce ne sono molti altri) ma fondamentalmente potresti tracciare i dati come un diagramma di prospettiva, un diagramma di contorno, una mappa di calore o se preferisci una dispersione 3D grafico (che è più o meno un diagramma prospettico quando si hanno valori di per tutte le coppie ( x , y ) . Ecco alcuni esempi di ciascuno (da un noto set di dati 3D ):z(X,y)R

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Ecco due grafici aggiuntivi che hanno caratteristiche di stampa migliori rispetto a quelle fornite in precedenza. inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine Quindi, a seconda delle tue preferenze, determinerai il modo in cui ti piacerebbe visualizzare i set di dati 3D.

Here is the `R` code used to generate these four mentioned plots.
library(fields)
library(scatterplot3d)

#Data for illistarition
x = seq(-10, 10, length= 100)
y = x
f = function(x, y) { r = sqrt(x^2+y^2); 10 * sin(r)/r }
z = outer(x, y, f)
z[is.na(z)] = 1

#Method 1
#Perspective Plot
persp(x,y,z,col="lightblue",main="Perspective Plot")

#Method 2
#Contour Plot
contour(x,y,z,main="Contour Plot")
filled.contour(x,y,z,color=terrain.colors,main="Contour Plot",)

#Method 3
#Heatmap
image(x,y,z,main="Heat Map")
image.plot(x,y,z,main="Heat Map")

#Method 4
#3-D Scatter Plot
X = expand.grid(x,y)
x = X[,1]
y = X[,2]
z = c(z)
scatterplot3d(x,y,z,color="lightblue",pch=21,main="3-D Scatter Plot")

Quella mappa di calore è accecante.
gung - Ripristina Monica

@Gung, (o qualcuno davvero) sai se esiste un aggiungere una barra laterale che dice a quali valori corrispondono i colori della mappa di calore? Ovviamente sta usando il comando image.

3
Penso che tu voglia il image.plot()comando per aggiungere una barra dei colori. Inoltre, filled.contour()genera un grafico simile con una barra dei colori aggiunta per impostazione predefinita.
Macro,


2
Mentre siamo qui, ti faccio solo notare che puoi personalizzare la tavolozza dei colori come preferisci ... Il modo più semplice (ma probabilmente non il migliore) per farlo è usare colorRampPalette(), ad esempio se scrivi a = colorRampPalette(c('dark blue','blue','light blue','yellow','orange', 'red','dark red')), crea una funzione ache genera un'approssimazione discreta di un continuum di colore che passa attraverso quei colori. L'argomento a aè un numero intero che determina la risoluzione di questa approssimazione discreta.
Macro,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.