Vous avez reçu un message "Your GitLab account has been locked ..." ? Pas d'inquiétude : lisez cet article https://docs.gricad-pages.univ-grenoble-alpes.fr/help/unlock/

Commit 842f5d99 authored by Laurence Viry's avatar Laurence Viry
Browse files

ajout fichiers .md dans docs

parent 3f1fe10d
......@@ -54,6 +54,10 @@ fx <- sin(2*pi*grillex)
plot(x=grillex,y=fx)
```
![png](GraphiqueR_files/GraphiqueR_3_0.png)
Il est plus classique d'utiliser la fonction plot avec des formules du type $\bf{y^{\sim}x}$
......@@ -98,6 +102,61 @@ mtcars$carb <- factor(mtcars$carb)
summary(mtcars)
```
'data.frame': 32 obs. of 11 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : int 6 6 4 6 8 6 8 4 4 6 ...
$ disp: num 160 160 108 258 360 ...
$ hp : int 110 110 93 110 175 105 245 62 95 123 ...
$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
$ wt : num 2.62 2.88 2.32 3.21 3.44 ...
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : int 0 0 1 1 0 1 0 1 1 1 ...
$ am : int 1 1 1 0 0 0 0 0 0 0 ...
$ gear: int 4 4 4 3 3 3 3 4 4 4 ...
$ carb: int 4 4 1 1 2 1 4 2 2 4 ...
mpg cyl disp hp
Min. :10.40 Min. :4.000 Min. : 71.1 Min. : 52.0
1st Qu.:15.43 1st Qu.:4.000 1st Qu.:120.8 1st Qu.: 96.5
Median :19.20 Median :6.000 Median :196.3 Median :123.0
Mean :20.09 Mean :6.188 Mean :230.7 Mean :146.7
3rd Qu.:22.80 3rd Qu.:8.000 3rd Qu.:326.0 3rd Qu.:180.0
Max. :33.90 Max. :8.000 Max. :472.0 Max. :335.0
drat wt qsec vs
Min. :2.760 Min. :1.513 Min. :14.50 Min. :0.0000
1st Qu.:3.080 1st Qu.:2.581 1st Qu.:16.89 1st Qu.:0.0000
Median :3.695 Median :3.325 Median :17.71 Median :0.0000
Mean :3.597 Mean :3.217 Mean :17.85 Mean :0.4375
3rd Qu.:3.920 3rd Qu.:3.610 3rd Qu.:18.90 3rd Qu.:1.0000
Max. :4.930 Max. :5.424 Max. :22.90 Max. :1.0000
am gear carb
Min. :0.0000 Min. :3.000 Min. :1.000
1st Qu.:0.0000 1st Qu.:3.000 1st Qu.:2.000
Median :0.0000 Median :4.000 Median :2.000
Mean :0.4062 Mean :3.688 Mean :2.812
3rd Qu.:1.0000 3rd Qu.:4.000 3rd Qu.:4.000
Max. :1.0000 Max. :5.000 Max. :8.000
mpg cyl disp hp drat
Min. :10.40 4:11 Min. : 71.1 Min. : 52.0 Min. :2.760
1st Qu.:15.43 6: 7 1st Qu.:120.8 1st Qu.: 96.5 1st Qu.:3.080
Median :19.20 8:14 Median :196.3 Median :123.0 Median :3.695
Mean :20.09 Mean :230.7 Mean :146.7 Mean :3.597
3rd Qu.:22.80 3rd Qu.:326.0 3rd Qu.:180.0 3rd Qu.:3.920
Max. :33.90 Max. :472.0 Max. :335.0 Max. :4.930
wt qsec vs am gear carb
Min. :1.513 Min. :14.50 0:18 0:19 3:15 1: 7
1st Qu.:2.581 1st Qu.:16.89 1:14 1:13 4:12 2:10
Median :3.325 Median :17.71 5: 5 3: 3
Mean :3.217 Mean :17.85 4:10
3rd Qu.:3.610 3rd Qu.:18.90 6: 1
Max. :5.424 Max. :22.90 8: 1
* Représentation de deux variables qualitatives: les variables **drat** et **wt**
......@@ -105,6 +164,10 @@ summary(mtcars)
plot(mtcars[,"drat"],mtcars[,"wt"])
```
![png](GraphiqueR_files/GraphiqueR_9_0.png)
Comme les deux variables sont contenues dans le même *data-frame*, une syntaxe plus simple permet d'avoir directement les noms de variables en labellés d'axe.
......@@ -112,6 +175,10 @@ Comme les deux variables sont contenues dans le même *data-frame*, une syntaxe
plot(drat~wt,data=mtcars)
```
![png](GraphiqueR_files/GraphiqueR_11_0.png)
Cette représenation graphique aurait pu être obtenue en définissant de manière explicite les labels des axes à l'appel de la fonction "plot" avec les arguments **xlab** et **ylab**.
......@@ -126,6 +193,10 @@ plot(mtcars[,"drat"],mtcars[,"wt"],xlab="wt",ylab="drat")
plot(wt~cyl,data=mtcars,xlab="Number of cylinders",ylab="Weight (1000 lbs)")
```
![png](GraphiqueR_files/GraphiqueR_15_0.png)
La fonction plot retourne une boîte à moustaches par modalité de la variable qualitative. Ce graphique permet de voir rapidement si il existe un effet de la variable *Numbers of cylinders* sur la varibale *Weight*. Il peut être obtenu à partir de la fonction **boxplot**.
......@@ -133,6 +204,28 @@ La fonction plot retourne une boîte à moustaches par modalité de la variable
boxplot(wt~cyl,data=mtcars)
```
Error in eval(expr, envir, enclos): object 'wt' not found
Traceback:
1. boxplot(wt ~ cyl)
2. boxplot.formula(wt ~ cyl)
3. eval(m, parent.frame())
4. eval(expr, envir, enclos)
5. stats::model.frame(formula = wt ~ cyl)
6. model.frame.default(formula = wt ~ cyl)
7. eval(predvars, data, env)
8. eval(expr, envir, enclos)
* Représenation de deux variables qualitatives par un diagramme bande:
......@@ -149,6 +242,10 @@ Pour chaque modalité du facteur explicatif ("vs") on la fréquence relative de
plot(cyl~drat,data=mtcars)
```
![png](GraphiqueR_files/GraphiqueR_21_0.png)
Ce graphique peut être obtenu directement à partir de la fonction **splineplot**.
......@@ -157,11 +254,19 @@ spineplot(cyl~drat,data=mtcars)
```
![png](GraphiqueR_files/GraphiqueR_23_0.png)
```R
plot(mtcars[,"cyl"]~mtcars[,"drat"],xlab="Rear axle ratio",ylab="Number of cylinders")
```
![png](GraphiqueR_files/GraphiqueR_24_0.png)
```R
colorInd <-function(v,seuil)
{
......@@ -172,6 +277,10 @@ plot(mtcars[,"drat"], ylab="Rear axle ratio",cex=0.5, pch=16,col=colS)
```
![png](GraphiqueR_files/GraphiqueR_25_0.png)
```R
plot(mtcars[,"drat"], ylab="Rear axle ratio",cex=0.5, pch=16,col="red")
```
......@@ -188,12 +297,17 @@ Une fois le graphique tracé, on peut le compléter par d'autres informations:
x<- 1:10;y <-x^2;z <-x^3;w<-x^(-2)
plot(x,y,type="l",main="Fonctions puissances",cex.main=0.9)
text(4,y[4]+5,expression(x^2))
lines(x,z,col="red")
text(2,z[2]+5,expression(x^3))
lines(x,w,col="blue")
text(6,w[6]+5,expression(x^-2))
```
![png](GraphiqueR_files/GraphiqueR_28_0.png)
* ajout de *points* par la fonction **point()**
* ajout de *flèches* par la fonction **arrow()**
* ajout de *segments* par la fonction **segments()**
......@@ -217,11 +331,17 @@ data(iris)
```R
par(mfrow=c(1,2)) # une ligne et deux colonnes
par(mfrow=c(2,2)) # une ligne et deux colonnes
plot(Sepal.Length~Sepal.Width,data=iris,pch=0)
plot(Petal.Length~Petal.Width,data=iris,pch=16)
plot(Sepal.Length~Sepal.Width,data=iris,pch=0)
plot(Petal.Length~Petal.Width,data=iris,pch=16)
```
![png](GraphiqueR_files/GraphiqueR_33_0.png)
* Pour des graphiques de taille différentes, on utilisera la fonction **layout**.
Elle admet comme argument, une matrice de taille **nrow X ncol**, les valeurs de la
matrice correspondent aux numéros des graphiques qui doivent être dessinés dans
......@@ -243,6 +363,10 @@ plot(Sepal.Length~Sepal.Width,data=iris,pch=21)
plot(Petal.Length~Petal.Width,data=iris,pch=16)
```
![png](GraphiqueR_files/GraphiqueR_35_0.png)
## Personnalisation des graphiques
Certains paramètres sont modifiables directement dans la commande graphique, d'autres sont accessibles dans la fonction par qui gère tous les paramètres graphiques du device:
......@@ -282,6 +406,10 @@ lines(iris[76:150,"Sepal.Length"],ylim=ecarty,col="red")
legend("topleft",legend=c("sem1","sem2"),col=c("black","red"),lty=1)
```
![png](GraphiqueR_files/GraphiqueR_40_0.png)
* On peut insérer des symboles ou des formules mathématiques en utilisant la syntaxe "latex":
......@@ -290,6 +418,10 @@ plot(1,1,cex.lab=0.8,xlab=expression(bar(x) == sum(frac(x[i],10),i==1,10)))
```
![png](GraphiqueR_files/GraphiqueR_42_0.png)
```R
x <- seq(-4, 4, len = 101)
y <- cbind(sin(x), cos(x))
......@@ -300,6 +432,10 @@ matplot(x, y, type = "l", xaxt = "n",main = expression(paste(plain(sin) * phi, "
axis(1, at = c(-pi, -pi/2, 0, pi/2, pi),labels = expression(-pi, -pi/2, 0, pi/2, pi))
```
![png](GraphiqueR_files/GraphiqueR_43_0.png)
Pour connaître l'ensemble des paramètres qui permettent d'améliorer les
graphiques, voir la fonction **par()** (help(par))
......@@ -317,6 +453,10 @@ hist(iris$Sepal.Length,col="red",main="Histogramme de Sepal.Length",prob=TRUE,xl
plot(density(iris$Sepal.Length),cex.main=0.8,main="Noyaux",xlab="Sepal.Length")
```
![png](GraphiqueR_files/GraphiqueR_46_0.png)
L'histogramme est un estimateur de la densité si on indique **prob=TRUE**
### Barplot
......@@ -333,6 +473,162 @@ Sepal.Length
```
<ol class=list-inline>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(5.2,6.1]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(5.2,6.1]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(4.3,5.2]</li>
<li>(5.2,6.1]</li>
<li>(4.3,5.2]</li>
<li>(5.2,6.1]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(5.2,6.1]</li>
<li>(4.3,5.2]</li>
<li>(5.2,6.1]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(5.2,6.1]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(5.2,6.1]</li>
<li>(4.3,5.2]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(5.2,6.1]</li>
<li>(6.1,7]</li>
<li>(5.2,6.1]</li>
<li>(6.1,7]</li>
<li>(4.3,5.2]</li>
<li>(6.1,7]</li>
<li>(4.3,5.2]</li>
<li>(4.3,5.2]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(6.1,7]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(6.1,7]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(6.1,7]</li>
<li>(5.2,6.1]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(4.3,5.2]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(6.1,7]</li>
<li>(4.3,5.2]</li>
<li>(5.2,6.1]</li>
<li>(6.1,7]</li>
<li>(5.2,6.1]</li>
<li>(7,7.9]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(7,7.9]</li>
<li>(4.3,5.2]</li>
<li>(7,7.9]</li>
<li>(6.1,7]</li>
<li>(7,7.9]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(5.2,6.1]</li>
<li>(5.2,6.1]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(7,7.9]</li>
<li>(7,7.9]</li>
<li>(5.2,6.1]</li>
<li>(6.1,7]</li>
<li>(5.2,6.1]</li>
<li>(7,7.9]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(7,7.9]</li>
<li>(6.1,7]</li>
<li>(5.2,6.1]</li>
<li>(6.1,7]</li>
<li>(7,7.9]</li>
<li>(7,7.9]</li>
<li>(7,7.9]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(5.2,6.1]</li>
<li>(7,7.9]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(5.2,6.1]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(5.2,6.1]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(6.1,7]</li>
<li>(5.2,6.1]</li>
</ol>
```R
# Sepal.Length est de class factor
par(mfrow=c(1,2))
......@@ -342,6 +638,24 @@ barplot(table(Sepal.Length),col=1:nlevels(Sepal.Length),legend=TRUE)
barplot(table(Sepal.Length),col=1:nlevels(Sepal.Length),horiz=TRUE)
```
<dl class=dl-horizontal>
<dt>(4.3,5.2]</dt>
<dd>45</dd>
<dt>(5.2,6.1]</dt>
<dd>50</dd>
<dt>(6.1,7]</dt>
<dd>43</dd>
<dt>(7,7.9]</dt>
<dd>12</dd>
</dl>
![png](GraphiqueR_files/GraphiqueR_51_1.png)
### pie: diagramme circulaire (camembert)
......@@ -349,6 +663,10 @@ barplot(table(Sepal.Length),col=1:nlevels(Sepal.Length),horiz=TRUE)
pie(table(Sepal.Length),col=1:nlevels(Sepal.Length),radius = 1.)
```
![png](GraphiqueR_files/GraphiqueR_53_0.png)
### Diagramme en barre par groupe
......@@ -361,6 +679,14 @@ class(Sepal.Width)
```
'numeric'
'factor'
```R
par(mfrow=c(1,3))
barplot(table(Sepal.Length,Sepal.Width),col=1:nlevels(Sepal.Length),legend=TRUE)
......@@ -370,6 +696,10 @@ barplot(table(Sepal.Length,Sepal.Width),col=1:nlevels(Sepal.Length),beside=TRUE)
barplot(table(Sepal.Length,Sepal.Width),col=1:nlevels(Sepal.Length),beside=TRUE,horiz=TRUE)
```
![png](GraphiqueR_files/GraphiqueR_56_0.png)
## Graphiques en plusieurs dimensions
Les fonctions de représentation 3D sur une grille de points sont les fonctions
......@@ -397,6 +727,10 @@ z <-outer(x,y,f)
persp(x,y,z,theta=30,phi=30,expand=0.5)
```
![png](GraphiqueR_files/GraphiqueR_62_0.png)
Nous pouvons obtenir les **courbes de niveaux** en utilisant la fonction **contour** (lignes de
niveau) ou la fonction **image()** (lignes de niveau avec effet de couleur).
......@@ -407,6 +741,10 @@ contour(x,y,z)
image(x,y,z)
```
![png](GraphiqueR_files/GraphiqueR_64_0.png)
Nous pouvons utiliser le package **rgl** pour construire la surface de réponse du
graphique précédent.
......@@ -417,6 +755,16 @@ rgl.surface(x,y,z)
plot3d(x,y,z)
```
Error in library(rgl): there is no package called ‘rgl’
Traceback:
1. library(rgl)
2. stop(txt, domain = NA)
## Package lattice
### Livres:
......@@ -441,5 +789,3 @@ plot3d(x,y,z)
* Elegant Graphics for Data Analysis - Hadley Wickham (Edition Springer)
* R Graphics Cookbook - Winston Chang (Edition O'Reilly)
......@@ -3738,7 +3738,7 @@ f(1:10, 1:10)
```
![png](output_171_0.png)
![png](Objets_files/Objets_171_0.png)
Comme nous avons transmis l'argument **point-point-point** à **plot.default()**, tout ce que **plot.default()** sait faire, notre fonction **f()** sait le faire également.
......@@ -3750,7 +3750,7 @@ f(1:10, 1:10, main = "Titre de ce graphique", pch = 19,col = "blue", las = 1,
```
![png](output_173_0.png)
![png](Objets_files/Objets_173_0.png)
### Plusieurs résultats à une même fonction
......
......@@ -25,6 +25,30 @@ somme
monbloc
```
<ol class=list-inline>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
</ol>
55
55
## Structure de contrôle
### Les boucles for ou while
......@@ -38,6 +62,28 @@ Les boucles classiques de la programmation sont disponibles sous **R**.
for (i in 1:20) print(i)
```
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
[1] 11
[1] 12
[1] 13
[1] 14
[1] 15
[1] 16
[1] 17
[1] 18
[1] 19
[1] 20
L'ensemble des valeurs prise par l'**indice de la boucle** i est un vecteur qui peut être de mode divers obtenu à partir des constructeurs classiques de vecteurs dans R (c(), seq(), rep(),...).
......@@ -46,6 +92,18 @@ L'ensemble des valeurs prise par l'**indice de la boucle** i est un vecteur qui
for (i in seq(1,20,2)) print(i)
```
[1] 1
[1] 3
[1] 5
[1] 7
[1] 9
[1] 11
[1] 13
[1] 15
[1] 17
[1] 19
```R
# Indice de mode "character"
......@@ -53,6 +111,11 @@ vecteur <-c("Alice","Marcel","Alexis")
for(i in vecteur) print(i)
```
[1] "Alice"
[1] "Marcel"
[1] "Alexis"
* En général, on a plusieurs instructions à effectuer à chaque itération de la boucle for. On encadre ces itérations avec des accolades "**{}**".
Un boucle s'écrit:
......@@ -80,9 +143,14 @@ for (i in 1:n){
z[i] <- x[i] + y[i]
}
meanx <- meanx/n
meanx
meany <- meany/n
```
-0.0493923703698845
* On peut sauter une itération dans une boucle avec l'instruction **next**.
Pour mettre à zéro tous les éléments d'une matrice sauf les éléments diagonaux :
......@@ -100,6 +168,28 @@ for(i in 1:3){