#      SINTESI dei PRINCIPALI COMANDI GRAFICI (indice)
#     (parti in viola: da copiare e incollare)
# NOTA
# rm(list=ls()) rimuove tutte le definizioni di oggetti
# DIMENSIONI FINESTRA GRAFICA
# Con dev.new(width=m,height=n) puoi dimensionare una eventuale nuova
# finestra grafica di dimensioni fissate (m e n misure in pollici)
# COORDINATE di PUNTI
# Per leggere le coordinate approssimative di un punto puoi cliccarlo
# dopo aver battuto:
locator(1)
#
# GRAFICI di FUNZIONI e simili
# Il modo più semplice è usare il comando plot:
f <- function(x) x^3-5*x^2+6; plot(f,-1,5); abline(h=0, v=0)
# Infatti viene scelta automaticamente la scala verticale.  Questa
# può comunque essere scelta aggiungendola nel modo seguente:
plot(f,-1,5, ylim=c(-20,10)); abline(h=0); abline(v=0)
# Posso anche scegliere un intervallo orizzontale maggiore del dominio:
plot(f,-1,5, xlim=c(-2,6), ylim=c(-20,10)); abline(h=0); abline(v=0)
# Posso aggiungere sulla stessa scala il grafico di un'altra funzione
# g aggiungendo l'opzione add=TRUE: plot(g,-1,5,add=TRUE). Per ottenere
# più punti posso aggiungere l'opzione n=...
#    Per grafici migliori si può procedere come segue.
# Si scelgono la parte di piano cartesiano, l'origine e le posizioni
# delle tacche sugli assi:
view <- c(10,70, -20,150); orig <- c(20,0)
tx <- c(10,20,30,40,50,60,70)
ty <- c(-20,0,20,40,60,80,100,120,140)
# oppure:
ty <- seq(-20,140,20)
# Quindi si copiano e incollano i seguenti comandi
plot(c(view[1],view[2]),c(view[3],view[4]),type="n",xlab="",ylab="")
abline(h=ty, v=tx, col="grey60",lty=3)
abline(h=orig[2], v=orig[1],col="brown")
axis(1,pos=orig[2],label=FALSE,col="brown"); axis(2,pos=orig[1],label=FALSE,col="brown")
# ovvero (se si vogliono le frecce sugli assi):
plot(c(view[1],view[2]),c(view[3],view[4]),type="n",xlab="",ylab="")
abline(h=ty, v=tx, col="grey60",lty=3)
arrows(view[1],orig[2],view[2]+(view[2]-view[1])/30,orig[2],length=0.1,col="brown")
arrows(orig[1],view[3],orig[1],view[4]+(view[4]-view[3])/30,length=0.1,col="brown")
#    Si possono poi aggiungere grafici vari di funzioni (definite):
F <- function(p) p*2+5; G <- function(x) x^2/30-15
curve(F, add=TRUE, col="blue", from=10, to=60)
curve(G, add=TRUE, col="red")
# o di poligonali:
x <- c(15,20,40,55)
y <- c(10,-5,125,75)
lines(x,y)
# o di singoli punti:
x <- c(15+5,20+5,40+5,55+5)
y <- c(-10-10,5-10,125-10,75)
points(x,y,col="brown")
# si usa points(...,type="p",pch=".") se si vogliono punti piccoli,
# pch=20 se si vogliono punti di dimensioni intermedie.
# Se si vuole un sistema monometrico basta aggiungere asp=1 (infatti
# asp dà il rapporto Δy/Δx)
plot(c(view[1],view[2]),c(view[3],view[4]),type="n",xlab="",ylab="", asp=1)
abline(h=ty,v=tx, col="grey60",lty=3)
abline(h=orig[2],v=orig[1],col="brown")
axis(1,pos=orig[2],label=FALSE,col="brown"); axis(2,pos=orig[1],label=FALSE,col="brown")
#
# ISTOGRAMMI dati in classi non numeriche
# Dopo aver messo in collezione di dati dei valori,
dati <- c(15.5, 47.8, 36.7)
# si possono tracciarne istogrammi a barre od areogrammi circolari,
# con varie opzioni aggiungibili ai comandi:
barplot(dati); pie(dati)
#
# ISTOGRAMMI di dati da classificare
# Supponiamo di voler rappresentare tre file di dati:
alu <- c(156,168,162,150,167,157,170,157,159,164,157,165,+
163,165,166,160,163,162,155)
alu2 <- c(172,162,150,167,157,170,157,159,164,157,165,163,165,+
166,160,163,162,155)
alu3 <- c(172,162,160,167,157,170,157,159,164,157,165,163,165,+
166,160,163,162,180)
# e di averne trovato minimo e massimo o di averne tracciato
# i boxplot con  boxplot(alu, alu2, alu3)  e capito che le
# uscite stanno tra 150 e 180. Posso tracciarne gli istogrammi
# con (ho preso 6 come freq. massima; se non va bene cambio):
interv <- seq(150,183,3)
# oppure:
interv <- c(150,153,156,159,162,165,168,171,174,177,180,183)
tacchey <- seq(0,6,1)
hist(alu,interv,right=FALSE,col="yellow",xlab="",ylab="",main="",axes=FALSE)
abline(h = tacchey, v = interv, col="grey60", lty=3)
axis(1,pos=0,col="blue",label=TRUE, at=interv)
axis(2,pos=interv[1],col="blue",label=TRUE, at=tacchey)
# se voglio che l'istogramma non sia sovrapposto dalla griglia posso poi fare:
hist(alu,interv,right=FALSE,xlab="",ylab="",main="",axes=FALSE,add=TRUE)
# questo per il primo istogramma; per gli altri due:
hist(alu2,interv,right=FALSE,xlab="",ylab="",main="",border="blue",add=TRUE,angle=135,density=14)
hist(alu3,interv,right=FALSE,xlab="",ylab="",main="",border="red",add=TRUE,angle=45,density=7)
# Aggiungendo freq=FALSE vengono rappresentate le densità invece che le frequenze
# assolute (occorre cambiare tacchey)
interv <- c(150,153,156,159,162,165,168,171,174,177,180,183)
tacchey <- seq(0,0.1,0.01)
hist(alu,interv,freq=FALSE,right=FALSE,col="yellow",xlab="",ylab="",main="",axes=FALSE)
abline(h = tacchey, v = interv, col="grey60", lty=3)
axis(1,pos=0,col="blue",label=TRUE, at=interv)
axis(2,pos=interv[1],col="blue",label=TRUE, at=tacchey)
#
# ISTOGRAMMI di dati classificati
# (sull'asse y vengono rappresentate le densità di frequenza)
# In interv si mettono gli estremi degli intervalli (uno in piu' di freq)
freq <- c(46,25,58,186,870,1071,3124)
interv <- c(0,1,15,25,45,65,75,100)
tacchey <- c(0,0.005,0.01,0.015,0.02,0.025)
totale <- sum(freq); fr_perc <- freq/totale*100; fr_perc
rap <- 1e5/totale; fr <- freq*rap; num_int <- length(freq)
dati <- c(seq(interv[1],interv[2],by=(interv[2]-interv[1])/fr[1]))
for(i in 2:num_int){dati<- c(dati,seq(interv[i],interv[i+1],by=(interv[i+1]-interv[i])/fr[i]))}
hist(dati,interv,col="yellow",axes=FALSE,xlab="",main="",ylim=c(0,max(tacchey)))
abline(h = tacchey, col="grey60", lty=3)
axis(1,pos=0,col="blue",label=TRUE, at=interv)
axis(2,pos=interv[1],col="blue",label=TRUE, at=tacchey)
# Volendo, nel caso le tacche coprissero parte dell'istogramma,
# puoi ritracciare questo senza colore con:
hist(dati,interv,axes=FALSE,xlab="",main="",ylim=c(0,max(tacchey)),add=TRUE)
#