###      COME REALIZZARE GRAFI (E ...)    ###
##
## Puoi modificare i colori, il font, ... (la finestra è ridimensionabile col mouse)
##
## Parte standard
# Comandi che puoi richiamare e cambiare
dim <- 1                   # dimensione dei font
font <- 1                  # tipo di font
co <- "yellow"; bo <- NA   # colore e bordo dei box (rett)
co1 <- NA; bo1 <- "black"  # colore e bordo di riquadri (rett1)
tratto <- 1                # se metti 3 o 2 le linee sono tratteggiate, così sono cont.
# Comandi che devi rimettere per ogni nuovo grafo
par( mai = c(0,0,0,0) )
plot(c(0,100),c(0,100),type="n",fg="white")               # **
text(0,0,"0,0",col="red");text(0,50,"50",col="red");text(50,0,"50",col="red")
abline(h=seq(0,100,10),v=seq(0,100,10),lty=2,col="grey")  # reticolo
# fatto il grafo con la griglia ricopia i comandi con solo ** in testa
# Comandi che non devi più richiamare
linea_ <- function(P,Q) lines( c(P[1],Q[1]),c(P[2],Q[2]),lty=tratto )
rett <- function(P) rect(P[1]-P[3],P[2]-P[4],P[1]+P[3],P[2]+P[4],col=co,border=bo,lty=tratto)
rett1 <- function(P) rect(P[1]-P[3],P[2]-P[4],P[1]+P[3],P[2]+P[4],col=co1,border=bo1,lty=tratto)
frase <- function(P,F) text(P[1],P[2],F,cex=dim,font=font)
freccian <- function(P,Q)  arrows(P[1],P[2],Q[1],Q[2],length=0.08,lty=tratto)     # normale
frecciau <- function(P,Q) arrows(P[1],P[2],Q[1],Q[2]-Q[4],length=0.08,lty=tratto) # su
frecciad <- function(P,Q) arrows(P[1],P[2],Q[1],Q[2]+Q[4],length=0.08,lty=tratto) # giù
frecciar <- function(P,Q) arrows(P[1],P[2],Q[1]-Q[3],Q[2],length=0.08,lty=tratto) # destra
freccial <- function(P,Q) arrows(P[1],P[2],Q[1]+Q[3],Q[2],length=0.08,lty=tratto) # sinistra
## Fine parte standard
#
## ESEMPIO 1
## Xcentro,Ycentro, Dx,Dy,   Frase
p1 <- c(15, 11,  13, 4); f1 <-  "prova breve"
p2 <- c(15,  6,  13, 4); f2 <- "da fare"
p3 <- c(80, 90,  10, 5); f3 <- "PROVA"
p4 <- c(50, 80,   9, 5); f4 <- "Eccola"
p5 <- c(90, 40,   3, 3); f5 <- "o"
linea_(p1,p3)
frecciau(p1,p4)
frecciad(p4,p1)
frecciar(p1,p5)
rett(p1); rett(p2); frase(p1,f1); frase(p2,f2)
rett(p3); frase(p3,f3)
rett(p4); frase(p4,f4)
rett(p5); frase(p5,f5)

#
# OK lo rifaccio senza reticolo
plot(c(0,100),c(0,100),type="n",fg="white")
linea_(p1,p3)
frecciau(p1,p4)
frecciad(p4,p1)
frecciar(p1,p5)
rett(p1); rett(p2); frase(p1,f1); frase(p2,f2)
rett(p3); frase(p3,f3)
rett(p4); frase(p4,f4)
rett(p5); frase(p5,f5)

#
## ESEMPIO 2
# Come sopra, con caratteri piu' piccoli, in Times, inclinati:
dim <- 0.8; font <- 8
plot(c(0,100),c(0,100),type="n",fg="white")
p1 <- c(15, 11,  11, 3); f1 <-  "prova breve"
p2 <- c(15,  6,  11, 3); f2 <- "da fare"
p3 <- c(80, 90,   9, 4); f3 <- "PROVA"
p4 <- c(50, 80,   8, 4); f4 <- "Eccola"
p5 <- c(90, 40,   3, 4); f5 <- "o"
linea_(p1,p3)
frecciau(p1,p4)
frecciad(p4,p1)
frecciar(p1,p5)
rett(p1); rett(p2); frase(p1,f1); frase(p2,f2)
rett(p3); frase(p3,f3)
rett(p4); frase(p4,f4)
rett(p5); frase(p5,f5)

#
## ESEMPIO 3
dim <- 1; font <- 1
plot(c(0,100),c(0,100),type="n",fg="white")
abline(h=seq(0,100,10),v=seq(0,100,10),lty=2,col="grey")
text(0,0,"0,0",col="red");text(0,50,"50",col="red");text(50,0,"50",col="red")
## Xcentro,Ycentro, Dx,Dy,   Frase
p1 <- c(55, 52.5,  15, 4.5); f1 <-  "bicicletta"
p2 <- c(55, 47.5,  15, 4.5); f2 <-  "con cambio"
rett(p1); rett(p2); frase(p1,f1); frase(p2,f2)
rett1(c(55,50, 15, 7))
# ho messo la scritta nel riquadro; ora scrivo più piccolo
dim <- 0.9
freccian(c(15,53),c(40,53))
freccian(c(15,47),c(40,47))
frase(c((40+15)/2,56),"movimento")
frase(c((40+15)/2,44),"informazioni")
frase(c(8,53),"uomo")
frase(c(8,47),"uomo")
freccian(c(70,50),c(95,50))
frase(c((70+95)/2,53),"movimento")
dim <- 1

## OK. Ora lo faccio senza reticolo
plot(c(0,100),c(0,100),type="n",fg="white")
co <- "pink"
rett(p1); rett(p2); frase(p1,f1); frase(p2,f2)
rett1(c(55,50, 15, 7))
# ho messo la scritta nel riquadro; ora scrivo più piccolo
dim <- 0.9
freccian(c(15,53),c(40,53))
freccian(c(15,47),c(40,47))
frase(c((40+15)/2,56),"movimento")
frase(c((40+15)/2,44),"informazioni")
frase(c(8,53),"uomo")
frase(c(8,47),"uomo")
freccian(c(70,50),c(95,50))
frase(c((70+95)/2,53),"movimento")
dim <- 1

#
## ESEMPIO 4
dim <- 1; font <- 1
plot(c(0,100),c(0,100),type="n",fg="white")
abline(h=seq(0,100,10),v=seq(0,100,10),lty=2,col="grey")
text(0,0,"0,0",col="red");text(0,50,"50",col="red");text(50,0,"50",col="red")
co <- "yellow"
p1 <- c(40,60,20,15); f1 <- "multipli di 2"
rett(p1); frase(p1,f1)
co <- "green"
p2 <- c(50,40,20,15); f2 <- "multipli di 5"
rett(p2); frase(p2,f2)
co <- "pink"
p3 <- c(45,50,15,5); f3 <- "multipli di 10"
rett(p3); frase(p3,f3)

# OK
plot(c(0,100),c(0,100),type="n",fg="white")
co <- "yellow"
p1 <- c(40,60,20,15); f1 <- "multipli di 2"
rett(p1); frase(p1,f1)
co <- "green"
p2 <- c(50,40,20,15); f2 <- "multipli di 5"
rett(p2); frase(p2,f2)
co <- "pink"
p3 <- c(45,50,15,5); f3 <- "multipli di 10"
rett(p3); frase(p3,f3)

#
## ESEMPIO 5
par( mai = c(0,0,0,0) )
plot(c(0,100),c(0,100),type="n",fg="white")
# traccio la griglia
abline(h=seq(0,100,10),v=seq(0,100,10),lty=2,col="grey")
dim <- 0.9
# distanzio verticalmente ad es. di 20 i nodi (80, 60, ...)
# provo a distanziarli orizzontalmente di 24 (56-24=32,...)
p1 <- c(56, 80,  13, 4); f1 <- "trasf. di scala"
p2 <- c(32, 60,  22, 4); f2 <- "tr. di sc. monometriche"
p3 <- c(80, 60,  17, 4); f3 <- "altre trasf. di scala"
p4 <- c(10, 40,  8.6, 4); f4 <- "riduzioni"
p5 <- c(32, 40,  7.4, 4); f5 <- "identità"
p6 <- c(54, 40,  12.5, 4); f6 <- "ingrandimenti"
linea_(p1,p2); linea_(p1,p3); linea_(p2,p4); linea_(p2,p5); linea_(p2,p6)
 
# aggiungo le scritte
rett(p1); frase(p1,f1);  rett(p2); frase(p2,f2)
rett(p3); frase(p3,f3); rett(p4); frase(p4,f4)
rett(p5); frase(p5,f5); rett(p6); frase(p6,f6)
# ok. Ora ridimensiono col mouse la finestra
 
# e ritraccio senza griglia
plot(c(0,100),c(0,100),type="n",fg="white")
abline(h=seq(0,100,10),v=seq(0,100,10),lty=2,col="white")
linea_(p1,p2); linea_(p1,p3); linea_(p2,p4); linea_(p2,p5); linea_(p2,p6)
rett(p1); frase(p1,f1);  rett(p2); frase(p2,f2)
rett(p3); frase(p3,f3); rett(p4); frase(p4,f4)
rett(p5); frase(p5,f5); rett(p6); frase(p6,f6)
 
#
## ESEMPIO 6    [ A/(B+C) + (D+E)/F ]
par( mai = c(0,0,0,0) )
plot(c(0,100),c(0,100),type="n",fg="white")
dim <- 1.1
p1 <- c(50, 80,  3, 3); f1 <- "+"
p2 <- c(25, 55,  3, 3); f2 <- "/"
p3 <- c(75, 55,  3, 3); f3 <- "/"
p4 <- c(13, 43,  3, 3); f4 <- "A"
p5 <- c(37, 43,  3, 3); f5 <- "+"
p6 <- c(63, 43,  3, 3); f6 <- "+"
p7 <- c(87, 43,  3, 3); f7 <- "F"
p8 <- c(28, 34,  3, 3); f8 <- "B"
p9 <- c(46, 34,  3, 3); f9 <- "C"
p10 <- c(54, 34,  3, 3); f10 <- "D"
p11 <- c(72, 34,  3, 3); f11 <- "E"
linea_(p1,p2); linea_(p1,p3)
linea_(p2,p4); linea_(p2,p5); linea_(p3,p6); linea_(p3,p7)
linea_(p5,p8); linea_(p5,p9); linea_(p6,p10); linea_(p6,p11)
rett(p1); rett(p2); rett(p3); rett(p5); rett(p6)
co <- "white"
rett(p4); rett(p7); rett(p8); rett(p9); rett(p10); rett(p11)
co <- "yellow"
frase(p1,f1); frase(p2,f2); frase(p3,f3); frase(p4,f4)
frase(p5,f5); frase(p6,f6); frase(p7,f7); frase(p8,f8)
frase(p9,f9); frase(p10,f10); frase(p11,f11)
 
#
## ESEMPIO 7    [ (2^3)*(-x)/(9-1)+x*5 ]
par( mai = c(0,0,0,0) )
plot(c(0,100),c(0,100),type="n",fg="white")
dim <- 1.1
p1 <- c(70, 85,  3, 4); f1 <- "+"
p2 <- c(50, 60,  3, 4); f2 <- "/"
p3 <- c(90, 60,  3, 4); f3 <- "*"
p4 <- c(81, 45,  3, 4); f4 <- "x"
p5 <- c(99, 45,  3, 4); f5 <- "5"
linea_(p1,p2); linea_(p1,p3)
linea_(p3,p4); linea_(p3,p5)
p6 <- c(30, 45,  3, 4); f6 <- "*"
p7 <- c(70, 45,  3, 4); f7 <- "-"
linea_(p2,p6); linea_(p2,p7)
p8 <- c(61, 30,  3, 4); f8 <- "9"
p9 <- c(79, 30,  3, 4); f9 <- "1"
linea_(p7,p8); linea_(p7,p9)
p10 <- c(20, 30,  3, 4); f10 <- "^"
p11 <- c(40, 30,  3, 4); f11 <- "-"
linea_(p6,p10); linea_(p6,p11)
p12 <- c(11, 15,  3, 4); f12 <- "2"
p13 <- c(29, 15,  3, 4); f13 <- "3"
p14 <- c(40, 15,  3, 4); f14 <- "x"
linea_(p10,p12); linea_(p10,p13)
linea_(p11,p14)
rett(p1); rett(p2); rett(p3); rett(p5); rett(p6); rett(p7); rett(p10); rett(p11)
co <- "white"
rett(p4); rett(p5); rett(p8); rett(p9); rett(p12); rett(p13); rett(p14)
co <- "yellow"
frase(p1,f1); frase(p2,f2); frase(p3,f3); frase(p4,f4)
frase(p5,f5); frase(p6,f6); frase(p7,f7); frase(p8,f8)
frase(p9,f9); frase(p10,f10); frase(p11,f11)
frase(p12,f12); frase(p13,f13); frase(p14,f14)