Grafici in R con ggplot2

# Package "ggplot2"
library(ggplot2)
# per i grafici
# Due funzioni fondamentali: qplot() cioè quickplot, simile a plot() del base, e ggplot(), più flessibile e avanzata.

# qplot()
# in un'unica funzione crea il grafico
qplot(x, y, data=tabella)   # grafico a dispersione completo di etichette degli assi
qplot(x, y, data=tab, color=z)   # con color etichettati i punti in base al valore di z, legenda automatica
qplot(x, y, data=tab, color=z, geom=c("point","smooth"))   # con geom aggiunto trend con
# limiti dell'intervallo di confidenza al 95% ("point" riferito ai dati, "smooth" al tipo di linea)
qplot(x, y, data=tab, facets=.~z)   # con facets divido il grafico in n sottografici: il valore prima di ~
# indica il numero di "righe" quello a destra le "colonne" (. indica una singola riga, il numero di colonne sarà
# uguale al numero di valori di z, in base ai quali sarà suddiviso il grafico)
qplot(x, y, data=tab, geom=c("point","smooth"), facets=.~z)   
# sottografici e trend con intervalli di confidenza
qplot(x, y, data=tab, geom="boxplot")   # con geom costruito un boxplot al posto del grafico a
# dispersione.
qplot(x, y, data=tab, geom="boxplot", color=z)   # boxplot separati e etichettati per z
qplot(z, data=tab, fill=w)   # istogramma con valori di z. Ogni asta è divisa in colori diversi in base a w.
# Avendo specificato solo una variabile prima di data, capisce che è un istogramma
qplot(z ,data=tab, facets= w~., binwidth=2)   # con facets ho diviso il grafico in n "righe" (in
# base al numero di valori di w), binwidth indica l'ampiezza di ogni singolo bin
qplot(z ,data=tab, geom="bar", weight=y)   # barplot di z in base ai valori di y

# ggplot()
# A differenza di qplot() il grafico è costruito in più step
g <- ggplot(tab, aes(x, y))   # assegno a g il grafico che utilizza le variabili x e y della tabella tab
summary(g)   # riepiloga da cosa è costituito l'oggetto g
g   # grafico vuoto, non ho specificato cosa voglio
g+geom_point()   # grafico a dispersione con x e y specificati quando ho costruito g
g+geom_point()+geom_smooth()   # grafico a dispersione con trend e intervallo confidenza 0.95
g+geom_point()+geom_smooth(method="lm", se=FALSE)   # il trend costruito con regressione
# lineare semplice, se=FALSE per non mostrare l'intervallo di confidenza
g+geom_point()+geom_smooth(method="lm")+facet_grid(.~w)   # diviso verticalmente in "w"
# parti
g+geom_point(color="red", size=4, alpha=1/2)   # dispersione con punti rossi di dimensione 4 e
# trasparenza 50% che ci consente di vedere la densità
g+geom_point(size=4, alpha=1/2, aes(color=z))   # rispetto a prima colori diversi in base a z.
# Dobbiamo usare aes() e non direttamente color perché il colore non è più una costante come prima
# Aggiungendo xlab(), ylab(), e ggtitle() diamo titoli a assi e grafico, oppure insieme come parametri di labs()
g+geom_point(aes(color=drv))+labs(title="Titolo!", x="X",y="Y")
g+geom_point(aes(color=drv))+theme_bw(base_family="Times")   # theme_bw() toglie lo
# sfondo grigio, e con l'argomento base_family cambiato il font
g + geom_line()+ylim(-3,3)   # grafico a linea in cui il range è predefinito. Con il parametro ylim(), gli
# outliers fuori dal range non vengono inclusi nel grafico
g + geom_line()+coord_cartesian(ylim=c(-3,3))   # in questo caso l'outlier è incluso nel grafico
# ma si vede la linea che esce dal range e poi rientra (non è nel grafico ma c'è, prima lo escludeva a priori)
g+geom_point()+facet_grid(w~z, margins=TRUE)   # con margins aggiunte una riga e una colonna
# di "sottografici" con i totali di riga e colonna (e totalone)
g+geom_boxplot()+facet_grid(.~w)   # n boxplot in base a w
g+geom_bar(stat='identity')   # barplot: stat='identity' da aggiungere se una colonna contiene già i
# valori di y (nessuna somma da fare)
# Per impostare le etichette dell'asse, quando si crea la base del grafico usare scale_x_continuous per variabile
# continua, scale_x_discrete se discreta (y per altro asse)
g <- ggplot(tab, aes(x, y))+scale_x_continuous(breaks = c(1,2,3,4))

No comments:

Post a Comment