27
UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE U.F.R. SJAP Année universitaire 2013 – 2014 Master Droit-Éco Cours de M. Desgraupes Cours de Statistiques et Économétrie Séance 02 1 Notions de base 2 1.1 La fonction plot() .................................. 2 1.2 La fonction par() .................................. 3 2 Sorties graphiques 4 2.1 Les périphériques .................................. 4 2.2 Sortie dans un fichier ................................ 6 3 Fonctions graphiques 7 3.1 La fonction lines() .................................. 7 3.2 Fonctions en escalier ................................ 8 3.3 La fonction pie() .................................. 9 3.4 La fonction boxplot() ................................ 10 3.5 La fonction barplot() ................................ 12 3.6 La fonction hist() .................................. 13 3.7 Polygône de fréquences ............................... 16 3.8 Fonction de densité ................................. 18 3.9 La fonction curve() ................................. 18 3.10 La fonction points() ................................. 19 3.11 La fonction text() .................................. 20 3.12 La fonction abline() ................................. 21 3.13 La fonction grid() .................................. 23 3.14 Courbes paramétriques ............................... 24 3.15 Graphiques multiples ................................ 25 1

UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x y

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSEU.F.R. SJAP Année universitaire 2013 – 2014Master Droit-Éco Cours de M. Desgraupes

Cours de Statistiques et Économétrie

Séance 02

1 Notions de base 21.1 La fonction plot() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 La fonction par() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Sorties graphiques 42.1 Les périphériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2 Sortie dans un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3 Fonctions graphiques 73.1 La fonction lines() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.2 Fonctions en escalier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.3 La fonction pie() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.4 La fonction boxplot() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.5 La fonction barplot() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.6 La fonction hist() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.7 Polygône de fréquences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.8 Fonction de densité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.9 La fonction curve() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.10 La fonction points() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.11 La fonction text() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.12 La fonction abline() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.13 La fonction grid() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.14 Courbes paramétriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.15 Graphiques multiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

1

Page 2: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

Graphiques avec R

1 Notions de base

1.1 La fonction plot()La fonction plot est une fonction générique. Elle se comporte différemment selon la classe

des objets qu’on lui passe en argument. On décrit ici son implémentation par défaut. Pour repré-senter des valeurs numériques, on lui passe un vecteur d’abscisses et un vecteur d’ordonnées. Parexemple :

> x <- 1:10> y <- log(x^4+x^2+1)> plot(x,y)

2 4 6 8 10

24

68

x

y

Par défaut, la fonction plot dessine seulement les points (diagramme de dispersion, scatter-plot). Pour joindre les points par des segments, il faut ajouter l’argument 'l' (ou type='l') :

plot(x, y, type='l')

Autres valeurs pour l’argument type :– "p" pour *p*oints– "l" pour *l*ines– "b" pour *b*oth– "c" pour segments entre points

2

Page 3: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

– "o" pour surimpression (*o*verplotted)– "h" pour des lignes verticales (*h*istogram ou *h*igh-density)– "s" pour fonction en escalier (*s*teps)– "S" comme "s" mais commence verticalement– "n" pour pas de graphiqueAutres paramètres utiles pour porter des indications sur le graphique :– main titre général– xlab étiquette pour l’axe des x– ylab étiquette pour l’axe des y– sub sous-titre– asp aspect-ratio, i-e rapport y/x

1.2 La fonction par()Il existe de nombreux autres paramètres graphiques qui peuvent être spécifiés au moyen de la

fonction par.

par(fg="red")par(bg="yellow")plot(x, 3*x, 'b')

On peut en général passer directement les arguments à la fonction plot :

plot(x, 3*x, 'b',fg="blue")

Autres paramètres : col, col.axis, col.lab, col.main, col.sub, etc.pch pour choisir le symbole représentant les points. Voici les 20 premiers :

> n <- 20> plot(1:n,rep(1,n),pch=1:n)

3

Page 4: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

● ● ● ● ● ●

5 10 15 20

0.6

0.8

1.0

1.2

1.4

1:n

rep(

1, n

)

2 Sorties graphiques

2.1 Les périphériquesNotion de périphériques pour les sorties graphiques. Elles peuvent être dirigées vers l’écran,

vers une imprimante ou vers un fichier. Dans chaque cas, les instructions graphiques sont adaptéesen conséquences par R : le code n’est pas le même si on écrit dans un fichier PNG ou dans unfichier PostScript. L’utilisateur doit seulement spécifier le périphérique de sortie et R se charged’envoyer les instructions appropriées.

On dispose des fonctions suivantes pour manipuler les périphériques de sortie :– dev.cur– dev.list– dev.set– dev.new– dev.off

> dev.cur()

null device1

> dev.list()

NULL

4

Page 5: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

> dev.new()> dev.list()

pdf2

> dev.cur()

pdf2

Les périphériques d’écran correspondent au système de gestion de fenêtres du système d’ex-ploitation : quartz, windows, X11.

Pour se placer sur un périphérique, par exemple :

dev.set(2)

Pour refermer un périphérique, par exemple :

dev.list()dev.off(3)dev.list()

Traçons la courbe y = 3x2 dans un nouveau périphérique :

> x <- seq(0,10, length=100)> plot(x, 3*(x-5)^2, 'l')

0 2 4 6 8 10

020

4060

x

3 *

(x −

5)^

2

5

Page 6: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

2.2 Sortie dans un fichierOn utilise aussi la notion de périphérique. Il faut spécifier le nom du fichier de sortie (sinon R

fournit un nom par défaut).On dispose des fonctions suivantes : postscript, pdf, png, bmp, jpeg, tiff.Le fichier est écrit dans le répertoire courant que l’on peut connaître avec la fonction getwd

et modifier avec la fonction setwd.Exemple avec la fonction sin(x2) entre −π et π.

> x <- seq(-pi, pi, 0.05)> plot(x, sin(x^2), type="l", main="Fonction sin(x^2)")

−3 −2 −1 0 1 2 3

−1.

0−

0.5

0.0

0.5

1.0

Fonction sin(x^2)

x

sin(

x^2)

Pour sauvegarder comme fichier png :

> png("SinusQuad.png")> plot(x, sin(x^2), type="l", main="Fonction sin(x^2)")> dev.off()

pdf2

Pour créer un fichier pdf :

> pdf("SinusQuad.pdf")> plot(x, sin(x^2), type="l", main="Fonction sin(x^2)")> dev.off()

6

Page 7: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

pdf2

Idem en PostScript :

> postscript("SinusQuad.eps")> plot(x, sin(x^2), type="l", main="Fonction sin(x^2)")> dev.off()

pdf2

3 Fonctions graphiques

3.1 La fonction lines()La fonction lines écrit en surimpression sur un graphique déjà existant.Exemple

> x <- seq(-3,3,length=101)> plot(x,x^2, 'l')> lines(c(-3,0,3),c(9,0,9))

−3 −2 −1 0 1 2 3

02

46

8

x

x^2

7

Page 8: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

Exercice dessiner, entre 1 et 10, une fonction en dents de scie qui vaut 1 sur les nombres impairset 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire.

> x <- 1:10> y <- rep(c(0,1),5)> plot(x,y,type='l', col="blue")> y <- rep(c(1,0),5)> lines(x, y, col="red", lty=3)

2 4 6 8 10

0.0

0.2

0.4

0.6

0.8

1.0

x

y

3.2 Fonctions en escalierOn considère la distribution suivante qui représente la répartition de 100 familles selon le

nombre de pièces dans leur logement :

1 2 3 4 5 6 7 810 15 15 30 10 12 5 3

On calcule la distribution en proportions :

> nb <- 1:8> eff <- c(10, 15, 15, 30, 10, 12, 5, 3)> tot <- sum(eff)> prop <- round(eff/tot, 4)> pourcent <- prop*100> pourcent

8

Page 9: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

[1] 10 15 15 30 10 12 5 3

La fonction de répartition est la somme cumulée des proportions :

> cumsum(prop)

[1] 0.10 0.25 0.40 0.70 0.80 0.92 0.97 1.00

On la représente comme une fonction en escalier grâce au type 's' ou 'S' :

> repart <- cumsum(prop)> plot(1:8, repart, "s")

1 2 3 4 5 6 7 8

0.2

0.4

0.6

0.8

1.0

1:8

repa

rt

3.3 La fonction pie()La fonction pie construit des diagrammes à secteur circulaire dit camemberts :

pie(eff, labels=as.character(nb))

> etqt <- c("1 piece", paste(2:8,"pieces"))

pie(eff, labels=etqt)pie(eff, labels=etqt, main="Distribution de 100 familles")

> pie(eff, labels=etqt, main="Distribution de 100 familles",+ col=gray(seq(0.4, 0.8, length=8)), init.angle=90)

9

Page 10: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

1 piece

2 pieces

3 pieces

4 pieces

5 pieces

6 pieces

7 pieces8 pieces

Distribution de 100 familles

3.4 La fonction boxplot()La fonction boxplot permet de construire des diagrammes à moustaches pour des échan-

tillons de données observées :

> echant <- rep(nb,eff)> boxplot(echant)> summary(echant)

Min. 1st Qu. Median Mean 3rd Qu. Max.1.00 2.75 4.00 3.86 5.00 8.00

10

Page 11: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

12

34

56

78

On peut dessiner plusieurs boîtes en parallèle :

> x1 <- rnorm(100, 0, 2)> x2 <- rnorm(100, 0.5, 2.5)> x3 <- rnorm(100, 0.2, 1.5)> boxplot(cbind(x1,x2,x3))

11

Page 12: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

x1 x2 x3

−8

−6

−4

−2

02

46

Voir les options de la fonction : border, col, horizontal, notch, names.NB : il existe une deuxième syntaxe dans laquelle on passe une formule comportant une

variable de type facteur. On en verra un exemple plus loin.

3.5 La fonction barplot()La fonction barplot permet de construire des diagrammes en bâtons. Par exemple

> nb <- 1:8> eff <- c(10, 15, 15, 30, 10, 12, 5, 3)> etqt <- c(paste(1:8,"p"))> barplot(eff, names.arg =etqt,+ main="Logements de 100 familles",+ space=rep(10,8))

12

Page 13: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

1 p 2 p 3 p 4 p 5 p 6 p 7 p 8 p

Logements de 100 familles

05

1015

2025

30

Autres manières d’obtenir des diagrammes de ce type :

– avec la fonction lines :plot(1:8,eff)for (i in 1:8) {

lines( c(i,i), c(0,eff[i]))}

– avec la fonction plot :plot(1:8,eff,"h")

3.6 La fonction hist()Fabriquons un vecteur de 200 notes en demi-points, normalement distribuées, centrées autour

de 10, avec écart-type 3,5 (en fait autour de 20 avec σ = 7 puis divisées par 2) :

> set.seed(1)> notes <- round(rnorm(200, 20, 7))/2> summary(notes)

Min. 1st Qu. Median Mean 3rd Qu. Max.2.00 8.00 10.00 10.12 12.00 18.50

> hist(notes, main='Histogramme des notes')

On peut imposer les subdivisions avec l’argument breaks. Par exemple :

13

Page 14: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

> brks <- seq(0, 20, 2.5)> hist(notes, main='Histogramme des notes', breaks=brks)

Histogramme des notes

notes

Fre

quen

cy

0 5 10 15 20

010

2030

4050

60

Par défaut on obtient les effectifs en ordonnées. Pour obtenir des fréquences (proportions), ilfaut ajouter l’argument probability comme ceci :

hist(notes, main='Histogramme des notes', breaks=brks, probability = TRUE)

ou freq=FALSE.On peut spécifier des couleurs avec l’option col :

hist(notes, main='Histogramme des notes', breaks=brks, probability = TRUE, col="gray")hist(notes, main='Histogramme des notes', breaks=brks, probability = TRUE,

col=gray(seq(0.2,0.8,length=10)))

Ou bien des hâchures :

hist(notes, main='Histogramme des notes', breaks=brks, probability = TRUE, density=3, angle=45)hist(notes, main='Histogramme des notes', breaks=brks, probability = TRUE,

density=3, angle=(1:10)*8.5)

L’option border spécifie la couleur du pourtour des rectangles.Les options main, xlab, ylab sont aussi supportées.On peut mettre du texte au sommet des rectangles avec l’option labels :

> hist(notes, main='Histogramme des notes', breaks=brks, probability = TRUE, labels=LETTERS[1:10],+ col=gray(seq(0.2,0.8,length=10)))

14

Page 15: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

Histogramme des notes

notes

Den

sity

0 5 10 15 20

0.00

0.02

0.04

0.06

0.08

0.10

0.12

A

B

C

D

E

F

G

HI

J

Faisons des intervalles d’amplitude inégale en groupant les deux premières classes (notes de0 à 4) ainsi que les trois dernières (notes de 14 à 20). Il faut simplement changer les points derupture (breaks) :

> brks <- c(0,4,6,8,10,12,14,20)> hist(notes, main='Histogramme des notes', breaks=brks, probability = TRUE)

15

Page 16: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

Histogramme des notes

notes

Den

sity

0 5 10 15 20

0.00

0.02

0.04

0.06

0.08

0.10

0.12

3.7 Polygône de fréquencesOn utilise la fonction lines pour faire passer une ligne brisée par les milieux des sommets des

rectangles.On peut obtenir ces quantités dans la valeur de retour de la fonction hist :

> his <- hist(notes, main='Histogramme des notes', breaks=brks, probability = TRUE)> class(his)

[1] "histogram"

> names(his)

[1] "breaks" "counts" "density" "mids" "xname" "equidist"

L’objet his est de classe histogram et comporte des éléments nommés : breaks, counts,intensities, density, mids, xname, equidist.

Par exemple :

> his$mids

[1] 2 5 7 9 11 13 17

> his$equidist

16

Page 17: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

[1] FALSE

> his$count

[1] 5 19 34 53 40 29 20

> his$xname

[1] "notes"

> his$density

[1] 0.00625000 0.04750000 0.08500000 0.13250000 0.10000000 0.07250000 0.01666667

Première approche :

lines(his$mids, his$density, type="l")

Il manque les segments extrêmaux. On les rajoute comme ceci :

> his <- hist(notes, main='Histogramme des notes', breaks=brks, probability = TRUE)> absc <- c(0, his$mids, 20)> ord <- c(0, his$density, 0)> lines(absc, ord, type="l")

Histogramme des notes

notes

Den

sity

0 5 10 15 20

0.00

0.02

0.04

0.06

0.08

0.10

0.12

17

Page 18: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

3.8 Fonction de densitéLa fonction density permet de calculer une estimation d’un noyau de densités pour une

distribution donnée. En retour, elle renvoie un objet de classe density avec des composantes : x,y, bw, n, call, etc.

On peut donc utiliser les abscisses x et les ordonnées y dans la fonction lines pour représenterla densité en surimpression. Par exemple :

> hist(notes, main='Histogramme et densité', probability = TRUE)> dns <- density(notes)> lines(dns$x, dns$y)

Histogramme et densité

notes

Den

sity

5 10 15 20

0.00

0.02

0.04

0.06

0.08

0.10

0.12

Plus succinctement, on peut écrire :

hist(notes, main='Histogramme des notes', probability = TRUE)lines(density(notes))

3.9 La fonction curve()La fonction curve permet de tracer une courbe en fonction de x. A la différence de plot,

l’argument principal de curve est une expression écrite comme fonction de x ou bien le nomd’une fonction écrite en fonction d’un argument x.

Par exemple pour tracer la fonction cos(x2)− sin(x2) entre −π et π :

> curve(cos(x^2)-sin(x^2), from=-pi , to=pi)

18

Page 19: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

−3 −2 −1 0 1 2 3

−1.

5−

1.0

−0.

50.

00.

51.

01.

5

x

cos(

x^2)

− s

in(x

^2)

3.10 La fonction points()La fonction points permet de rajouter des points à un graphique. Par exemple, pour indiquer

les points à coordonnées entières sur le graphique précédent :

> curve(cos(x^2)-sin(x^2), from=-pi , to=pi)> xn <- -3:3> yn <- cos(xn^2)-sin(xn^2)> points(xn, yn)

19

Page 20: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

−3 −2 −1 0 1 2 3

−1.

5−

1.0

−0.

50.

00.

51.

01.

5

x

cos(

x^2)

− s

in(x

^2)

3.11 La fonction text()La fonction text permet de rajouter du texte sur un graphique. On doit indiquer un vecteur

d’abscisses, un vecteur d’ordonnées et un vecteur de chaînes de caractères à placer aux endroitsindiqués.

Par exemple, on peut ajouter l’indication origine sous le point de coordonnées (0,0) du gra-phique précédent comme ceci :

> text(0,-0.1,"origine")

La fonction paste est utile pour fabriquer un vecteur de chaînes :

> curve(cos(x^2)-sin(x^2), from=-pi , to=pi)> xn <- -3:3> yn <- cos(xn^2)-sin(xn^2)> paste("x =",xn)

[1] "x = -3" "x = -2" "x = -1" "x = 0" "x = 1" "x = 2" "x = 3"

> text(xn, yn+0.1, paste("x =",xn))

20

Page 21: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

−3 −2 −1 0 1 2 3

−1.

5−

1.0

−0.

50.

00.

51.

01.

5

x

cos(

x^2)

− s

in(x

^2)

x = −3

x = −2

x = −1

x = 0

x = 1

x = 2

x = 3

3.12 La fonction abline()La fonction abline permet de placer des droites sur un graphique déjà existant.Il y a deux manières de l’utiliser :– en spécifiant l’ordonnée à l’origine (intercept) et la pente– en utilisant les arguments h et v pour tracer des droites horizontales ou verticalesL’argument lty est utile pour sélectionner le type de tracé (pointillé, continu, tireté, etc.).

Exercice 1 : tracer la droite d’équation y = −1/2x+ 6 sur l’intervalle [0,10] :

> plot(0,0, ylim=c(0,10), xlim=c(0,10), type='n')> abline(6,-1/2)

Remarque : utilisation du type 'n'.

Exercice 2 : ajouter des axes

> abline(h=0, v=0)

Exercice 3 : faire une grille de 2 en 2 avec des lignes tiretées

> plot(0,0, ylim=c(0,10), xlim=c(0,10), type='n')> abline(6,-1/2)> abline(h=0, v=0)> abline(h=seq(2,10,2), v=seq(2,10,2), lty=3, col="grey")

21

Page 22: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

0 2 4 6 8 10

02

46

810

0

0

Exercice 4 : faire un graphique montrant les différents styles pour des valeurs de lty (qui vontde 1 à 6).

> plot(0,0, ylim=c(0,8), xlim=c(0,8))> abline(h=1:6, lty=1:6)> text(1,(1:6)+0.2, paste("lty =", 1:6))

22

Page 23: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

0 2 4 6 8

02

46

8

0

0

lty = 1

lty = 2

lty = 3

lty = 4

lty = 5

lty = 6

3.13 La fonction grid()La fonction grid peut remplacer la fonction abline quand il s’agit d’ajouter une grille à un

graphique. On lui passe en argument le nombre de lignes à tracer sur le graphique dans les di-rections horizontale et verticale. L’argument peut être NA si on ne veut pas de lignes dans unedirection.

Cette fonction accepte les arguments col, lty, lwd.Par exemple :

> x <- seq(-1,1,len=100)> plot(x, sqrt(1-x^2),'l')> grid(5, 10, lty= 4, col="grey", lwd=2)

23

Page 24: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

−1.0 −0.5 0.0 0.5 1.0

0.0

0.2

0.4

0.6

0.8

1.0

x

sqrt

(1 −

x^2

)

3.14 Courbes paramétriquesLa fonction plot se prête bien à l’utilisation des coordonnées paramétriques. Voici, par exemple,

comment obtenir une ellipse d’équationx2

a2+y2

b2= 1 en utilisant la représentation x = a cos(t), y =

b sin(t) :

> a <- 2> b <- 1> t <- seq(0, 2*pi, length = 100)> plot(a*cos(t), b*sin(t), type='l', asp=1)> abline(h=0, v= 0, col="grey50")

24

Page 25: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

−2 −1 0 1 2

−1.

5−

1.0

−0.

50.

00.

51.

01.

5

a * cos(t)

b *

sin(

t)

Noter l’utilisation de l’option asp (aspect-ratio) pour imposer que les unités soient les mêmessur les deux axes et que la courbe ne soit pas déformée.

3.15 Graphiques multiplesIl est possible de placer plusieurs graphiques sur un même canevas. On spécifie des dimen-

sions qui indiquent combien il y a de graphiques par ligne et par colonne comme dans une grilleinvisible. On utilise pour cela l’option mfrow de la fonction par. Par exemple (en reprenant desvariables qui ont été définies dans des exemples précédents) :

> op <- par(mfrow=c(2, 2))> pie(eff, labels=etqt, main="100 familles",+ col=gray(seq(0.4, 0.8, length=8)))> barplot(eff,names.arg = etqt,+ main="100 familles",+ space=rep(10,8))> boxplot(echant)> hist(notes, breaks=brks, probability = TRUE, col="gray",+ main='Histogramme des notes', xlab='Notes entre 0 et 20',+ ylab='Proportions')> par(op)

25

Page 26: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

1 p

2 p3 p

4 p

5 p6 p

7 p8 p

100 familles

1 p 3 p 5 p 7 p

100 familles

05

1020

30

12

34

56

78

Histogramme des notes

Notes entre 0 et 20

Pro

port

ions

0 5 10 15 20

0.00

0.04

0.08

0.12

Cela donne une disposition :

_________| 1 | 2 |_________| 3 | 4 |_________

On peut aussi utiliser mfcol de la fonction par : avec cette option, l’organisation des gra-phiques se ferait en colonnes plutôt qu’en rangées.

_________| 1 | 3 |_________| 2 | 4 |_________

On peut aussi utiliser la fonction layout qui prend en argument une matrice indiquant l’em-placement des différents graphiques. Dans l’exemple précédent il y avait 4 graphiques qui sontnumérotés de 1 à 4. On définit une matrice par exemple comme ceci :

> mat <- matrix(1:4, nrow=2)

puis on déclare la disposition avec la fonction layout :

> layout(mat)

26

Page 27: UNIVERSITÉ PARIS OUEST NANTERRE LA DÉFENSE€¦ · et 0 sur les nombres pairs. Ajouter une fonction en pointillés qui fait le contraire. > x  y

Cette fonction est plus flexible et permet d’obtenir une disposition comme ceci par exemple :

_________| 1 |_________| 2 | 3 |_________

à partir de la matrice :

> mat <- matrix(c(1,1,2,3), nrow=2, byrow=T)

On obtiendrait ainsi :

> layout(mat)> hist(notes, breaks=brks, probability = TRUE, col="gray",+ main='Histogramme des notes', xlab='Notes entre 0 et 20',+ ylab='Proportions')> pie(eff, labels=etqt, main="100 familles",+ col=gray(seq(0.4, 0.8, length=8)))> barplot(eff,names.arg = etqt,+ main="100 familles",+ space=rep(10,8))

Histogramme des notes

Notes entre 0 et 20

Pro

port

ions

0 5 10 15 20

0.00

0.04

0.08

0.12

1 p

2 p3 p

4 p

5 p6 p

7 p8 p

100 familles

1 p 3 p 5 p 7 p

100 familles

05

1020

30

27