Scegliere tra qplot () e ggplot () in ggplot2 [chiuso]


98

Sto iniziando a utilizzare l'ottimo ggplot2pacchetto per la stampa in R, e una delle prime cose che mi chiedo prima di ogni trama è "bene, userò qploto ggplot?"

Capisco che qplotfornisce una sintassi più semplice mentre ggplotconsente il massimo delle funzionalità e della flessibilità, ma qual è la funzione che usi di più e hai alcuni casi d'uso precisi per ciascuna? Usi principalmente qplote ggplotsolo per trame complesse o usi ggplotsempre?

Grazie per il tuo feedback!

Risposte:


81

Per quanto mi riguarda, se sono disponibili sia qplot che ggplot, il criterio dipende dal fatto che i dati siano memorizzati in data.frame o variabili separate.

x<-1:10
y<-rnorm(10)

qplot(x,y, geom="line") # I will use this
ggplot(data.frame(x,y), aes(x,y)) + geom_line() # verbose

d <- data.frame(x, y)

qplot(x, y, data=d, geom="line") 
ggplot(d, aes(x,y)) + geom_line() # I will use this

Ovviamente, i grafici più complessi richiedono ggplot () e di solito memorizzo i dati in data.frame, quindi nella mia esperienza uso raramente qplot.

E suona bene usare sempre ggplot (). Mentre qplot salva la digitazione, perdi molte funzionalità.


2
Accettato, anche se ogni risposta è utile, grazie a tutti!
juba

Ottima domanda e un'ottima risposta.
d8aninja

risposta superba davvero grazie
Homam Bahrani

17

Sono nuovo su R, ma ho solo pensato di condividerlo.

 a <- c(1,2,3)

 b <- c(2,3,4)

 x <- qplot(a,b)

 y <- ggplot(data.frame(a,b), aes(a,b)) +geom_line()

Se cambio il valore delle variabili aeb e poi tracciamo x, terrà conto dei valori modificati dove come y non lo farebbe. Quindi durante lo scripting sarebbe bene usare ggplot come se si usasse qplot tutti i grafici saranno uguali agli ultimi riferimenti forniti a qplot.


11

Penso che dipenda da quanto spesso e per quale scopo intendi utilizzare ggplot2.

Uso principalmente ggplot2 per la grafica nelle pubblicazioni. Ciò significa che tendo ad aver bisogno delle funzionalità più avanzate e quindi non mi sono mai preoccupato di saperne di più qplot. Inoltre, dato che ho circa quattro pubblicazioni all'anno, non sto usando ggplot2 abbastanza da essere veramente a mio agio con la sintassi e quindi concentrarmi su un singolo aspetto sembra ottimale.

Tuttavia, se ricevi nuovi set di dati ogni settimana, probabilmente sei interessato a esplorare rapidamente i set di dati e produrre grafici di buona qualità. In questo caso, impara entrambi. Otterrai abbastanza pratica con la sintassi e (eventualmente) risparmierai tempo con qplot.


8

Juba, ho scoperto che è possibile utilizzare qplot per la maggior parte delle esigenze di plottaggio di base. È sufficientemente semplice, e le impostazioni predefinite abbastanza ragionevoli, che i miei studenti universitari lo usino esclusivamente e possono produrre trame eccellenti con esperienza limitata. E il grafico creato da qplot [p <- qplot (ecc.)] Può essere modificato da uno qualsiasi dei comandi completi forniti da ggplot2, il che è utile (sono tutti memorizzati allo stesso modo, non importa come sono stati creati). Quindi personalmente uso qplot per quasi tutto e salvo ggplot all'interno delle funzioni.


5
  • qplot è la scelta più semplice se hai a che fare con vettori di input
  • ggplot richiede un data.frame come struttura dei dati di input.

Quando vuoi produrre un istogramma, qplot necessita solo del vettore delle occorrenze

#rnorm 
x <- rnorm(10)

#ggplot2 package: qplot
qplot(x, geom="histogram")

#ggplot2: using straight ggplot (requires conversion to data.frame)
ggplot(data.frame(x), aes(x)) + geom_histogram()

3

Un'altra variante da me: lo uso qplotquando sto digitando direttamente nella console e ggplotquando scrivo script. Ma dopo aver scoperto più e più volte che voglio ricreare una trama che ho digitato nella console 15 minuti prima, ora le scrivo quasi tutte in uno script, quindi uso ggplot quasi tutto il tempo.

(È interessante vedere la diversità delle risposte!)

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.