Package R ggplot2 : Différence entre versions

De Wiki ODR
Aller à : navigation, rechercher
(Page créée avec « Ggplot2 est un package de R qui permet de réaliser des graphiques plus perfectionnés, et au design plus moderne. Pour cela, il existe deux fonctions : * QPLOT (pour "Qu... »)
 
Ligne 13 : Ligne 13 :
 
library(ggplot2)
 
library(ggplot2)
 
</pre>
 
</pre>
 
 
  
 
== Jeu de données : ==
 
== Jeu de données : ==
Ligne 32 : Ligne 30 :
 
head(iris)
 
head(iris)
 
</pre>
 
</pre>
 
  
 
Attention ! pour utiliser ggplot2, les données doivent être sous la forme « data.frame », ce qui peut être vérifié par : class(dataset), et corrigé si besoin avec as.data.frame(dataset)
 
Attention ! pour utiliser ggplot2, les données doivent être sous la forme « data.frame », ce qui peut être vérifié par : class(dataset), et corrigé si besoin avec as.data.frame(dataset)
Ligne 45 : Ligne 42 :
 
La syntaxe ressemble effectivement à celle de la fonction plot() (package "de base" de R).
 
La syntaxe ressemble effectivement à celle de la fonction plot() (package "de base" de R).
  
''qplot(x, y = NULL, ..., data, facets = NULL, margins = FALSE,
+
''qplot(x, y = NULL, ..., data, facets = NULL, margins = FALSE, geom = "auto", stat = list(NULL), position = list(NULL), xlim = c(NA,NA), ylim = c(NA, NA), log = "", main = NULL, xlab = deparse(substitute(x)), ylab = deparse(substitute(y)), asp = NA)''
  geom = "auto", stat = list(NULL), position = list(NULL), xlim = c(NA,NA), ylim = c(NA, NA), log = "", main = NULL,
 
  xlab = deparse(substitute(x)), ylab = deparse(substitute(y)), asp = NA)''
 
  
 
=== Objet géométrique ===
 
=== Objet géométrique ===
Ligne 68 : Ligne 63 :
 
|}
 
|}
  
De nombreux graphiques sont possibles (voir geom dans la documentation du package ggplot2). Parmi les plus utilisés :  
+
De nombreux graphiques sont possibles (voir geom dans la documentation du package ggplot2, ou  en page 56). Parmi les plus utilisés :  
  
Pour une dimension :  
+
'''Pour une variable à analyser :'''
 
* histogram : histogramme (variable quantitative continue)
 
* histogram : histogramme (variable quantitative continue)
 
* density : trace la courbe de densité (variable quantitative continue)
 
* density : trace la courbe de densité (variable quantitative continue)
* freqpoly : polynôme de fréquence
+
* freqpoly : polynôme de fréquence (variable quantitative continue)
* bar : diagramme en ba^ton (variable discrète)
+
* bar : diagramme en bâton (variable discrète)
 +
 
 +
'''Pour deux variables :'''
 +
* point : scatterplot
 +
* smooth : trace une courbe de tendance et son écart-type
 +
* boxplot : boxplot
 +
* line : trace des lignes entre les points (de la gauche vers la droite)
 +
* path : trace des lignes entre les points (dans n’importe quelle direction)
 +
 
 +
=== Une variable ===
 +
 
 +
==== Variable quantitative, continue. ====
 +
 
 +
===== Histogramme =====
 +
C'est le graphique tracé par défaut lorsque la variable indiquée est de type quantitatif (continu).
 +
 
 +
<pre>
 +
qplot(Sepal.Length,data=iris,geom="histogram") #par défaut
 +
</pre>
 +
 
 +
On peut l'améliorer : changer la couleur de remplissage (argument fill) et/ou la couleur de la bordure (argument colour) :
 +
<pre>
 +
qplot(Sepal.Length,data=iris,geom="histogram",fill=I("orange")) ## couleur de remplissage en orange
 +
qplot(Sepal.Length,data=iris,geom="histogram",fill=I("orange"),colour=I("black"))  ## et bordure en noir
 +
</pre>
 +
 
 +
De plus, QQPLOT permet d’adapter la largeur des classes utilisées pour tracer l’histogramme, et donc d’avoir un degré de précision plus ou moins élevé, grâce à l’argument binwidth.
 +
<pre>
 +
qplot(Sepal.Length,data=iris,geom="histogram",fill=I("orange"),binwidth=1)  ## larges classes
 +
qplot(Sepal.Length,data=iris,geom="histogram",binwidth=0.05)  ## classes ressérées
 +
</pre>
 +
 
 +
===== Courbe de densité =====
 +
<pre>
 +
qplot(Sepal.Length,data=iris,geom="density",colour=I("red"))
 +
</pre>
 +
 
 +
===== Polynôme de fréquence =====
 +
<pre>
 +
qplot(Sepal.Length,data=iris,geom="freqpoly",colour=I("blue"))
 +
</pre>
 +
 
 +
===== Variable discrète =====
 +
 
 +
Le graphique produit par défaut est un diagramme en bâton (à ne pas confondre avec un histogramme !!! voir [[Statistiques descriptives avec R]])
 +
<pre>
 +
qplot(Species,data=iris,geom="bar",fill=I("yellow")) #par défaut
 +
</pre>
 +
 
 +
 
 +
 
  
Pour deux dimensions : (page 56)
 
point : nuage de points
 
smooth : trace une courbe de tendance et son écart-type
 
boxplot : boxplot
 
line : trace des lignes entre les points (de la gauche vers la droite)
 
path : trace des lignes entre les points (dans n’importe quelle direction)
 
  
  
Ligne 119 : Ligne 158 :
  
  
 
 
Histogramme :
 
 
Qplot permet d’adapter la largeur des classes utilisées pour tracer l’histogramme, et donc d’avoir un degré de précision plus ou moins élevé, grâce à l’argument binwidth.
 
  
  

Version du 16 juillet 2014 à 11:54

Ggplot2 est un package de R qui permet de réaliser des graphiques plus perfectionnés, et au design plus moderne. Pour cela, il existe deux fonctions :

  • QPLOT (pour "Quick Plot") qui est la fonction "de base" du package (mais qui offre de grandes possibilités). Syntaxe générale : qplot(x,y,data=database)
  • GGPLOT va permettre de créer des graphiques extrêmement perfectionnés. Sa syntaxe diffère de la syntaxe habituelle : ggplot(data=data,aes=(x,y)) +layers. La fonction ggplot (argument data et aes pour "aesthetic mapping") va permettre de créer le graphique en lui même, et les layers vont permettre d'ajouter des paramètres modifiant la représentation.
##### On installe le package
install.packages("ggplot2")

Une fois installé, il suffit de charger le package, avant de vouloir l'utiliser.

### On charge le package
library(ggplot2)

Jeu de données :

Pour illustrer, on utilise le jeu de données « iris » de R, qui contient 150 observations de 5 variables : 4 variables de type quantitatif, et une de type qualitatif (Species).

  • Sepal.Length : longueur de la sépale
  • Sepal.Width : largeur de la sépale Petal.Length : longueur du pétale
  • Petal.Width : largeur du pétale
  • Species : espèce.
### On charge les données
data(iris)

La fonction head(dataset) permet d’avoir un aperçu des premières lignes du jeu de données :

head(iris)

Attention ! pour utiliser ggplot2, les données doivent être sous la forme « data.frame », ce qui peut être vérifié par : class(dataset), et corrigé si besoin avec as.data.frame(dataset)

class(iris)
as.data.frame(iris)

QPLOT

La syntaxe ressemble effectivement à celle de la fonction plot() (package "de base" de R).

qplot(x, y = NULL, ..., data, facets = NULL, margins = FALSE, geom = "auto", stat = list(NULL), position = list(NULL), xlim = c(NA,NA), ylim = c(NA, NA), log = "", main = NULL, xlab = deparse(substitute(x)), ylab = deparse(substitute(y)), asp = NA)

Objet géométrique

L’argument geom() (pour objet géométrique) va permettre de réaliser différents graphiques à une ou deux dimensions. Par défaut :

Type de la variable Objet par défaut
Quantitative geom ="histogram"  
Qualitative geom="bar"
Deux variables quantitatives geom="point" (scatterplot)

De nombreux graphiques sont possibles (voir geom dans la documentation du package ggplot2, ou en page 56). Parmi les plus utilisés :

Pour une variable à analyser :

  • histogram : histogramme (variable quantitative continue)
  • density : trace la courbe de densité (variable quantitative continue)
  • freqpoly : polynôme de fréquence (variable quantitative continue)
  • bar : diagramme en bâton (variable discrète)

Pour deux variables :

  • point : scatterplot
  • smooth : trace une courbe de tendance et son écart-type
  • boxplot : boxplot
  • line : trace des lignes entre les points (de la gauche vers la droite)
  • path : trace des lignes entre les points (dans n’importe quelle direction)

Une variable

Variable quantitative, continue.

Histogramme

C'est le graphique tracé par défaut lorsque la variable indiquée est de type quantitatif (continu).

qplot(Sepal.Length,data=iris,geom="histogram") #par défaut

On peut l'améliorer : changer la couleur de remplissage (argument fill) et/ou la couleur de la bordure (argument colour) :

qplot(Sepal.Length,data=iris,geom="histogram",fill=I("orange")) ## couleur de remplissage en orange
qplot(Sepal.Length,data=iris,geom="histogram",fill=I("orange"),colour=I("black"))  ## et bordure en noir

De plus, QQPLOT permet d’adapter la largeur des classes utilisées pour tracer l’histogramme, et donc d’avoir un degré de précision plus ou moins élevé, grâce à l’argument binwidth.

qplot(Sepal.Length,data=iris,geom="histogram",fill=I("orange"),binwidth=1)  ## larges classes
qplot(Sepal.Length,data=iris,geom="histogram",binwidth=0.05)  ## classes ressérées
Courbe de densité
qplot(Sepal.Length,data=iris,geom="density",colour=I("red"))
Polynôme de fréquence
qplot(Sepal.Length,data=iris,geom="freqpoly",colour=I("blue"))
Variable discrète

Le graphique produit par défaut est un diagramme en bâton (à ne pas confondre avec un histogramme !!! voir Statistiques descriptives avec R)

qplot(Species,data=iris,geom="bar",fill=I("yellow")) #par défaut




Ainsi, le graphique produit par défaut par la fonction est un nuage de points classique.

# Qplot
qplot(Sepal.Length,Sepal.Width, data=iris)

Comme pour tout graphique, il est possible (et conseillé) d’ajouter un titre au graphique et au axes.

 ## ajout titre
qplot(Sepal.Length,Sepal.Width, data=iris,xlab="Longueur de la sépale",ylab="Largeur de la sépale",main="Iris data scatterplot")

Le graphique peut être amélioré par l’ajout d’arguments à la fonction. De manière plus générale, ces arguments peuvent être modifiés ; par exemple produire un graphique avec des points bleu (et non noirs), ou des « + » à la place des points.

    1. changer la couleur

qplot(Sepal.Length,Sepal.Width, data=iris,colour = I("blue"))

    1. changer le symbole

qplot(Sepal.Length,Sepal.Width, data=iris,shape=I(3))


Il est aussi possible de modifier la taille des points sur le graphique, à l’aide de l’argument size par exemple pour affiner les points ou les grossir(par défaut, size=I(2)).

    1. taille

qplot(Sepal.Length,Sepal.Width, data=iris,size=I(1))


Enfin, l’argument alpha est utile en cas de nombre conséquent d’observations qui vont se superposer sur le graphique (ce qui n’est pas le cas ici). En ajustant la transparence, il permet d’améliorer la lisibilité du graphique. Par défaut alpha=I(1). L’utilisateur peut fixer alpha=I(1/x), avec x le nombre nécessaire d’observations qui se superposent pour obtenir une couleur opaque.

    1. transparence

qplot(Sepal.Length,Sepal.Width, data=iris,alpha=I(1/10))



  1. Une variable

qplot(Sepal.Length,data=iris,geom="histogram") #par défaut qplot(Sepal.Length,data=iris,geom="density") qplot(Sepal.Length,data=iris,geom="freqpoly") qplot(Species,data=iris,geom="bar") #par défaut

  1. Deux variables continues

qplot(Sepal.Length,Sepal.Width, data=iris, geom="point") #par défaut qplot(Sepal.Length,Sepal.Width, data=iris, geom="smooth")

à noter que la méthode pour tracer la courbe de tendance peut être changée par l’utilisateur grâce à l’argument «method= (par défaut, method=« loess » pour un nombre d’observations faible). Par exemple, method=« lm » permet de tracer une droite de regression linéaire. Le tracé peut être plus ou moins sinueux grâce à l’argument span, allant de 0 à 1.

qplot(Sepal.Length,Sepal.Width, data=iris, geom="line") qplot(Sepal.Length,Sepal.Width, data=iris, geom="path")

  1. Une continue, une discrete

qplot(Species,Sepal.Length, data=iris, geom="boxplot")

Les objets géométriques peuvent être combinés avec c(). En particulier, la courbe de tendance peut être ajoutée au nuage de points.

    1. combiné

qplot(Sepal.Length,Sepal.Width, data=iris, geom=c("point","smooth"))


Graphiques par sous-groupes. On peut présenter les observations issues de différentes sous-populations définies par les niveaux de la variable facteur group, soit d’une couleur différente, soit d’un symbole différent.

Par exemple l’argument colour=group permet de présenter d’une couleur les observations issues de différentes sous-populations, définies par les niveaux de la variable facteur group.

    1. ajoute de la couleur

qplot(Sepal.Length,Sepal.Width, data=iris,colour=Species)

On peut faire de même sur un graphique de type scatterplot grâce à l’argument shape=group, avec cette fois des symboles différents, selon le niveau de la variable group.

C’est aussi réalisable sur des courbes de densité (argument colour), ou des histogrammes (attention, ici l’agument à utiliser est fill=group)


plot offre aussi la possibilité de créer plusieurs graphiques juxtaposés, correspondant à un même graphique, sur différentes sous-populations définies par une variable group. On utilise l’argument facets=. facets= . ~ group va présenter les graphiques cote à cote (horizontalement), tandis que facets= group ~ . les superposera (verticalement). Par exemple ici, l’histogramme pour la variable Sepal.Length, pour chaque espèce. On constate qu’il est préférable de les présenter verticalement, sinon les histogrammes sont écrasés et peu lisibles.

    1. séries temporelles

Line et path sont utilise dans le cas de séries temporelles. On rappelle que la différence entre les deux provient du fait que path relie les points dans n’importe quelle direction (pourvu qu’il apparaissent en suivant dans la base de données), tandis que line relie les points de gauche à droite. Ainsi, on utilisera line, par exemple pour tracer l’évolution d’un phénomène en fonction de la date, tandis que l’on utilisera path pour relier les différents points selon l’ordre chronologique, dans un graphique à deux dimensions (dont aucune n’est temporelle).

Pour illustrer, on utilise le jeu de données « longley » qui contient des données macro-économiques annuelles (16 observations, entre 1947 et 1962). Par exemple, on peut utiliser l’argument line pour tracer l’évolution temporelle du taux de chômage.


On trace ensuite par exemple le nombre de personnes au chômage en fonction du taux de chômage. L’argument path va permettre de relier les points pour visualiser la variation d’année en année. Ici le graphique est clair (il y a peu d’observations, et les tracés ne se superposent pas), mais il est possible de le rendre plus lisible en ajoutant de la couleur selon l’année.