Graphiques


    Graphiques
    R offire de nombreuses possibilités pour effiectuer des graphiques et les multiples options graphiques permettent une grande flexibilité. La commande demo(graphics) donne un apercu de ces possibilités. Ici nous allons nous contenter de voir les représentations graphiques les plus classiques (graphe 2D, histogramme, boxplot) ainsi que les options graphiques les plus courantes.
    Pour chaque fonction, la liste complète des options s'obtient via l'aide-en-ligne. Généralement, l'affiichage d'un graphique se fait dans une fenetre graphique que l'on ouvre avec la commande
    > x11()
    La fonction de base est plot :
    > x<-c(-1000:1000)*pi/500
    > y<-cos(x)
    > plot(x,y)
    Options de la fonction plot
    main="Le titre"                                    titre du graphe
    sub="Le sous-titre"                           sous-titre du graphe
    xlab="  ",ylab="  "                                légende des axes
    xlim=c(xa,xb),  ylim=c(ya,yb)           fixent les limites inférieures et supérieures des axes (vecteurs `a deux éléments),
    type="  "                          par défaut : "p" pour points, sinon "l", "o", "h" ou "s"
    pch=n, lty=n                  symbole ou type de ligne utilisé
    col=n                               couleur
    Pour plus de détails, voir help(par)
    Types de symboles utilisables (pour référence)
    Exemple d'utilisation de plot
    > plot(x,y,xlim=c(0,pi),ylim=c(-1,1),xlab="x",ylab="y",lty=2,type="l",main="graphe de la fonction cosinus")          donne Tracé de variables discrètes
    >plot(test$poids,test$womac,xlim=c(70,85),ylim=c(0,50),xlab="poids",ylab="womac",pch=2,type="p",main="relation
    entre les variables poids et womac")
    Ajouter des éléments à un graphe
    title()                               titre
    legend()                         légende
    text()                               texte
    lines(x,y)                        trait entre x(=c(a,b)) et y(=c(c,d))
    points(a,b)                     tracé du point de coordonnées (a,b)
    arrows(a,b,c,d)             tracé d'une flèche entre (a,b) et (c,d)
    abline(a,b)                      trace la droite y = bx+a. Pour tracer une droite horizontale (resp. verticale), on pourra utiliser abline(h=) (resp. abline(v=))
    
    Exemple
    >x<-c(0:1000)*pi/100
    >plot(x,cos(x),xlim=c(0,pi),ylim=c(-1,1),type="l",ylab="",font=3)
    >lines(x,sin(x),lty=2)
    >abline(-1,1,lty=3)
    >legend(1, -0.5, c("cos(x)", "sin(x)", "x-1"),lty = c(1, 2, 3))
    Les différents types de graphes
    hist()                                              histogramme
    barplot()                                       graphe en barre
    boxplot()                                     La représentation en "boite `a moustache" d'un vecteur est `a mi-chemin entre un histogramme
    et la fonction de répartition. Elle permet de visualiser la moyenne, la médiane, les quartiles `a
    25% et 75% de la distribution empirique
    qqplot(), qqnorm()                    graphe quantile-quantile
    pie()                                              camembert
    pairs()                                          corrélations entre les colonnes d'une matrice
    matplot()                                      corrélations entre les colonnes de deux matrices
    
    Histogramme
    
Pour tracer un histogramme, la commande de base est la fonction hist
    > hist(x)
    Voici certaines options spécifiques de la fonction hist :
    -- breaks : permet de spécifier les points de ruptures entre les barres de l'histogramme, soit
    sous la forme d'un vecteur, soit sous la forme d'un nombre de barres.
    -- freq : permet de choisir l'histogramme des effiectifs, frequency en anglais (freq=TRUE, option par défaut), ou celui des proportions (freq=FALSE).
    -- col : indique la couleur pour remplir les barres.
    -- plot : si plot=FALSE, l'histogramme n'est pas tracé et la fonction renvoie la liste des points
    de ruptures et les effiectifs.
    -- right : permet de choisir des intervalles de la forme ]a, b] si right=TRUE (par défaut ils sont de la forme [a, b[).
    Pour tracer plusieurs graphes sur la même page (ex : histogramme de différentes variables), on utilise l'option mfrow=c(m,n)
    > par(mfrow=c(2,2))
    > hist(airquality$Ozone,main="",xlab="Ozone")
    > hist(airquality$Solar.R,main="",xlab="Solar.R")
    > hist(airquality$Wind,main="",xlab="Wind")
    > hist(airquality$Temp,main="",xlab="Temp")
    

x11()

x<-pi*c(0:200)/50
y<-cos(x)
plot(x,y)
plot(x,y,type="l")
plot(x,y,xlim=c(0,pi),ylim=c(-1,1),xlab="x",ylab="y",lty=2,type="l",main="graphe de la fonction cosinus")  
Ajouter des éléments à un graphe
Exemple
x<-pi*c(0:200)/50
y<-cos(x)
plot(x,y,xlab="Variable X",ylab="",xlim=c(0,max(x)),ylim=c(-1.5,7),type="l",font=2)
lines(x,sin(x),col="red")
legend(9,7,c("Sin(X)","Cos(X)"),lty=c(1,1),col=1:2)

abline(-1,1,lty=3,col="yellow")
legend(9,7,c("Sin(X)","Cos(X)", "x-1"),lty=c(1,1,3),col=c("red","green","yellow"))
legend(3, 1, c("cos(x)", "sin(x)", "x-1"),lty = c(1, 2, 3),col=c("red","green","yellow"))
arrows(0,0.5,1,0.75)
points(1,0.25)
title(main="ajouter un titre" )
text(6,2,"relir")                           

mtext="Les différents types de graphes"   


xgaus<-rnorm(100)

xgaus<-rnorm(500)
ygaus<-runif(60)
boxplot(xgaus,ygaus)
pie(rep(1,12),col=rainbow(12),radius = 0.9)

Les différents types de graphes
hist()
xgaus<-rnorm(100)

hist(xgaus,breaks=20)
hist(xgaus,breaks=20,col="red")

dev.new()
par(mfrow=c(2,2))
hist(airquality$Ozone,main="",xlab="Ozone")
hist(airquality$Solar.R,main="",xlab="Solar.R")
hist(airquality$Wind,main="",xlab="Wind")
hist(airquality$Temp,main="",xlab="Temp")

boxplot(airquality$Ozone)
summary(airquality$Ozone)


x=c(1,1,2,2,3,4,4,5,6,7,7,7,7,7,8,9,1,2)
barplot(x)
x1<-runif(100)
x2<-runif(100)
qqplot(x1,x2,main="qq-plot de x1 et x2")
abline(0,1)

x<-runif(100)
y<-rnorm(100)
qqnorm(x)
qqnormOui
abline(0,1)

pie(rep(1,12),col=rainbow(12))
##Une autre option très utile est la possibilité de superposer deux graphes
x<-pi*c(0:200)/50
y<-cos(x)
z<-2*sin(x)
plot(x,y,ylim=c(-2,2),type="l")
par(new=T)
plot(x,z,ylim=c(-2,2),type="l")



##Enfin, utilisons la fonction persp() pour faire un graphe 3D d'une fonction trigonométrique.
x<-pi*c(0:20)/5
y<-x
f <- function(x,y) {
  r <- sqrt(x^2+y^2)
  10 * sin(r)/r}
z <- outer(x, y, f)
persp(x,y,z)



Simulation de fractales        #
##################################

#spirale
n<-1000

a1<-array(data=c(0.839,  0.383,-0.303, 0.924),dim=c(2,2))
a2<-array(data=c(-0.161,  0.138,-0.136, -0.182),dim=c(2,2))
b1<-array(data=c(0.232,  -0.08),dim=c(2,1))
b2<-array(data=c(0.921,  0.178),dim=c(2,1))

simul<-array(data=c(0), dim=c(2,n))
decision<-rbinom(n,1,0.1)

simul[1,1]=0
simul[2,1]=0

for(i in 1tristen-1))
{
  if(decision[i]==0)
  {
    simul[,i+1]=a1%*%simul[,i]+b1
  }
  else
  {
    simul[,i+1]=a2%*%simul[,i]+b2
  }
  plot(t(simul[,1:i]), type='p', pch=21, xlim=c(-0.1, 1), ylim=c(-0.1, 1.1))
  points(simul[1,i+1],simul[2,i+1], pch=19, col='red')
}
###############################################################################
#feuille
n<-2000

a1<-array(data=c(0,  0,0, 0.16),dim=c(2,2))
a2<-array(data=c(0.2,0.23, -0.26, 0.22),dim=c(2,2))
a3<-array(data=c(-0.15, 0.26, 0.28, 0.24),dim=c(2,2))
a4<-array(data=c(0.85, -0.04, 0.04, 0.85),dim=c(2,2))

b1<-array(data=c(0,  0),dim=c(2,1))
b2<-array(data=c(0,  1.6),dim=c(2,1))
b3<-array(data=c(0,  0.44),dim=c(2,1))
b4<-array(data=c(0,  1.6),dim=c(2,1))


simul<-array(data=c(0), dim=c(2,n))
decision<-runif(n,0,1)

simul[1,1]=0
simul[2,1]=0

for(i in 1tristen-1))
{
  if(decision[i]<0.1)
  {
    simul[,i+1]=a1%*%simul[,i]+b1
  }
  if(0.1<=decision[i] && decision[i] <0.25)
  {
    simul[,i+1]=a2%*%simul[,i]+b2
  }
  if(0.25<=decision[i] && decision[i]<0.4)
  {
    simul[,i+1]=a3%*%simul[,i]+b3
  }
  if(0.4<=decision[i])
  {
    simul[,i+1]=a4%*%simul[,i]+b4
  }
  plot(t(simul[,1:i]), type='p', pch='.', xlim=c(-5, 5), ylim=c(-1, 10))
  points(simul[1,i+1],simul[2,i+1], pch=19, col='red')
}



Modifié le: mercredi 29 juin 2022, 00:18