1 La fonction plot classique

1.1 Les fenêtres graphiques

  • Tous les graphiques crées dans R sont affichés dans des fenêtres spéciales, distinctes de la console, appelées R graphics : Device numero-device, ou numero-device est un entier donnant le numéro de la fenêtre (ou device).

  • windows() ou win.graph() sont deux commandes qui permettent d’ouvrir une fenêtre graphique. Cette commande a plusieurs arguments

  • Pour fermer une fenêtre graphique on utilise la commande la commande dev.off(numéro de la fenêtre).

  • On peut aussi sauvegarder un graphique dans un fichier extérieur dans des formats différentes:

> savePlot(filename="Rplot",type=c("wmf", "png", "jpeg", "jpg", "bmp","ps", "pdf"),device=dev.cur())
  • Les arguments de la fonction savePlot

    • filename est le nom du fichier sous lequel enregistrer le graphique,
    • Le fichier peut être (Windows metafile, PNG, JPEG, BMP, PostScript ou PDF)
    • device est le nurnero de device ou se trouve le graphique que l’on veut enregistrer (par défaut, la fenêtre active).
  • Exemple :

> hist(runif(100))
> savePlot(filename="mongraph.png",type="png")

  • On peut aussi créer plusieurs graphiques dans une même fenêtre graphique utilisant la commande layout
> mat <- matrix(c(2,3,0,1,0,0,0,4,0,0,0,5),4,3,byrow=TRUE)
> mat
> mat <- matrix(c(2,3,0,1,0,0,0,4,0,0,0,5),4,3,byrow=TRUE)
> layout(mat)
> hist(runif(100))
> hist(runif(100))
> hist(runif(100))
> hist(runif(100))
> hist(runif(100))

null device 
          1 
  • On peut aussi contrôler hauteur et la largeur des sous-fenêtres graphiques dans la grande fenêtre graphique.
> mat <- matrix(c(2,3,0,1,0,0,0,4,0,0,0,5),4,3,byrow=TRUE)
> layout(mat,,widths=c(1,5,14),heights=c(1,2,4,1))
> hist(runif(100))
> hist(runif(100))
> hist(runif(100))
> hist(runif(100))
> hist(runif(100))

1.2 La fonction plot

  • Les arguments de la fonction plot

    • x Vecteur des coordonnées en x des points à tracer.
    • y Vecteur des coordonnées en y des points à tracer.
    • type Specifie le type de graphique a tracer: “p” pour des points, “l” pour des lignes, “b” pour les deux, “c” pour des lignes coupees au niveau des points, “o” pour des lignes et des points superposes, “h” pour des lignes verticales, “s” pour des marches d’escalier (step) et “n” pour ne rien tracer (mais affiche la feneêtre de trace avec les axes).
    • main Spécifie le titre principal.
    • sub Spécifie le sous-titre.
    • xlab Spécifie le titre de l’axe des x.
    • ylab Spécifie le titre de l’axe des y.
    • xlim Vecteur de longueur 2. Spécifie l’intervalle de valeurs à utiliser pour l’axe des x.
    • ylim Vecteur de longueur 2. Spécifie l’intervalle de valeurs à utiliser pour l’axe des y.
  • Exemples:

    • Un simple plot
> plot(1:4,c(2,3,4,1),type="b",main="Titre principal",sub="Sous-titre",xlab="Titre pour les x",ylab="Titre pour les y")

  • Ajout d’autres courbes sur le même graphe.
> points(1:4,c(4,2,1,3),type="l")

1.3 La fonction segments(), lines() et abline()

> plot(0,0,type="n",xlim=c(-1,1),ylim = c(-1,1))

> segments(x0=0,y0=0,x1=1,y1=1,col="red")

> lines(x=c(1,0),y=c(0,1),col="blue")

1.4 La fonction arrow()

> x <- runif(12)
> y <- runif(12)
> i <- order(x)
> i
 [1]  3  6 12 10  5  7  8  2  9  1  4 11
> x <- x[i]
> y<-y[i]
> plot (x,y)
> s <- seq(length(x)-1)
> arrows(x[s], y[s], x[s+1], y[s+1], length=0.1)

1.5 D’autres commandes et fonctionnalités

1.5.1 La commande curve

> curve(x^3-3*x,from=-2,to=2)

1.5.2 La commande box

Elle permet d’ajouter une boite autour du graphique courant. Le paramètre lty permet de gérer le type de boite ajoute, le paramètre lty spécifie le type de ligne utilisée pour tracer la boite.

> plot(runif(7), type="h",axes=FALSE)
> box(lty = "1373")

1.5.3 La commande colors()

> colors()[1:10]
 [1] "white"         "aliceblue"     "antiquewhite"  "antiquewhite1"
 [5] "antiquewhite2" "antiquewhite3" "antiquewhite4" "aquamarine"   
 [9] "aquamarine1"   "aquamarine2"  
> colors()[grep("pink",colors())]
 [1] "deeppink"   "deeppink1"  "deeppink2"  "deeppink3"  "deeppink4" 
 [6] "hotpink"    "hotpink1"   "hotpink2"   "hotpink3"   "hotpink4"  
[11] "lightpink"  "lightpink1" "lightpink2" "lightpink3" "lightpink4"
[16] "pink"       "pink1"      "pink2"      "pink3"      "pink4"     

1.5.4 Codage hexadecimal des couleurs

  • Chaque couleur est en fait codée par sa décomposition en couleurs de base : rouge, vert et bleu.

  • Chaque composante peut prendre une valeur entre 0 et 255 (0 : absence totale de la couleur; 255 : saturation de la couleur).

  • Le codage hexadécimal de ces 256 valeurs donne donc lieu à des codes compris entre 00 et FF.

    • Noir: #000000
    • Blanc: #FFFFFF
    • Vert amande: #82C46B
    • Jaune citron: #F7FF3C
    • Bleu canard: #048B9A
    • Bleu nuit: #10076B
  • La fonction rgb pour obtenir ce codage à partir de la décomposition en rouge, vert et bleu d’une couleur

> rgb(red=26,green=204,blue=76,maxColorValue = 255)
[1] "#1ACC4C"
  • La fonction col2rgb effectue l’opération inverse:
> col2rgb("#1ACC4C")
      [,1]
red     26
green  204
blue    76

1.5.5 A explorer encore :

  • La fonction rainbow()
  • Le package RColorBrewer
> require ("RColorBrewer")
Loading required package: RColorBrewer
> display.brewer.all()

1.5.6 La commande image()

  • Cette fonction créée et affiche une grille de rectangles en niveaux de gris au de couleurs. Ces rectangles sont aussi appelées des pixels (picture elements). Elle peut donc être utilisée pour afficher des données 3D au des données spatiales.

  • Exemple :

> X <- matrix(1:12,nrow=3)
> X
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
> couleurs <- c("orange", "orangered", "red", "lightblue", "blue", "white", "lightgrey", "grey",
+  "darkgrey", "yellow", "green", "purple")
> x1=rep(c(0,0.5,1),4)
> y1=rep(c(0,0.3,0.7,1),each=3)
> image(X,col=couleurs)
> text(x1,y1,labels = 1:12,cex=2)

  • Exercice : Tracer une matrice de corrélation avec image()

1.5.7 La commande text()

  • On peut ajouter du texte sur un graphique R: soit du texte simple ou même des titres en Latex.
> plot(1:10,1:10)
> text(3, 6,"du texte")
> text(4,9,expression(hat(beta)==X^t+x^{t^2}))

2 Les graphiques avec ggplot2

> library(readr)
> ## On va procéder par télécharger le jeu de données et les placer dans un fichier local
> file <- "debt.csv" 
> 
> # télécharger le jeu de données s'il n'existe pas
> if(!file.exists(file))
+   download.file("http://www.stat.cmu.edu/~cshalizi/uADA/13/hw/11/debt.csv",
+                 file, mode = "wb")
> 
> # charger les données dans l'objet 'debt'
> debt <- read_csv(file)
> # suppression de la première colonne
> debt <- debt[, -1]  
> # inspection du jeu de données
> str(debt)
Classes 'tbl_df', 'tbl' and 'data.frame':   1171 obs. of  4 variables:
 $ Country: chr  "Australia" "Australia" "Australia" "Australia" ...
 $ Year   : int  1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 ...
 $ growth : num  -3.56 2.46 6.44 6.61 6.92 ...
 $ ratio  : num  190 177 149 126 110 ...
> debt$Decade <- factor(10 * debt$Year%/%10)
> head(debt)
# A tibble: 6 x 5
    Country  Year    growth     ratio Decade
      <chr> <int>     <dbl>     <dbl> <fctr>
1 Australia  1946 -3.557951 190.41908   1940
2 Australia  1947  2.459475 177.32137   1940
3 Australia  1948  6.437534 148.92981   1940
4 Australia  1949  6.611994 125.82870   1940
5 Australia  1950  6.920201 109.80940   1950
6 Australia  1951  4.272612  87.09448   1950
> with(debt, plot(Year, growth))

> library(ggplot2)
> with(debt, qplot(Year, growth))

> qplot(Year, growth, data = debt) +
+   facet_wrap(~ Country)

> qplot(data = debt, y = growth, x = Year, geom = "line") + 
+   facet_wrap(~ Country)

> qplot(data = debt, y = ratio, x = Year, geom = c("line", "point")) + 
+   facet_wrap(~ Country) +
+   labs(x = NULL,
+        y = "Ratio dette publique / produit intérieur brut (%)\n")

> p <- ggplot(data = debt, aes(y = growth, x = ratio))
> names(p)
[1] "data"        "layers"      "scales"      "mapping"     "theme"      
[6] "coordinates" "facet"       "plot_env"    "labels"     
> head(p$data)
# A tibble: 6 x 5
    Country  Year    growth     ratio Decade
      <chr> <int>     <dbl>     <dbl> <fctr>
1 Australia  1946 -3.557951 190.41908   1940
2 Australia  1947  2.459475 177.32137   1940
3 Australia  1948  6.437534 148.92981   1940
4 Australia  1949  6.611994 125.82870   1940
5 Australia  1950  6.920201 109.80940   1950
6 Australia  1951  4.272612  87.09448   1950
> p$coordinates
<ggproto object: Class CoordCartesian, Coord>
    aspect: function
    distance: function
    expand: TRUE
    is_linear: function
    labels: function
    limits: list
    range: function
    render_axis_h: function
    render_axis_v: function
    render_bg: function
    render_fg: function
    train: function
    transform: function
    super:  <ggproto object: Class CoordCartesian, Coord>
> p

> p + geom_point() +
+   facet_grid(. ~ Decade)

> summary(debt$ratio)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  3.279  22.150  40.400  46.280  61.470 247.500 
> p<-p + geom_point() +
+   facet_grid(. ~ Decade) +
+   scale_x_continuous(breaks = seq(0, 200, by = 100))
> p

> p + aes(color = ratio < 90)

> p + aes(color = ratio < 90) + scale_colour_brewer(palette = "Set1")

> ## On change les couleurs et on personalise la légende
> p <- p + aes(color = ratio < 90) +
+   scale_color_brewer("", palette = "Set1",
+                      labels = c("ratio > 90", "ratio < 90"))
> ## On ajoute une courbe de régression locale 
> p + geom_smooth(method = "loess", se = FALSE,
+                 size = 1, color = "black")

> ggplot(data = debt, aes(y = growth, x = ratio)) + 
+   geom_point(color = "grey50") +
+   geom_vline(xintercept = 90, lty = "dotted") +
+   geom_smooth(method = "loess", size = 1, color = "black", se = FALSE) +
+   scale_x_continuous(breaks = seq(0, 200, by = 100)) +
+   facet_grid(. ~ Decade) +
+   labs(y = "Taux de croissance du produit intérieur brut\n",
+        x = "\nRatio dette publique / produit intérieur brut (%)",
+        title = "Données Reinhart et Rogoff corrigées, 1946-2009\n") +
+   theme_bw() +
+   theme(strip.background = element_rect(fill = "grey90", color = "grey50"),
+         strip.text = element_text(size = rel(1)),
+         panel.grid = element_blank())

> ggplot(data = debt, aes(x = ratio > 90, y = growth)) +
+   geom_boxplot() +
+   scale_x_discrete(labels = c("< 90", "90+")) +
+   facet_grid(. ~ Decade) +
+   labs(y = "Taux de croissance du produit intérieur brut\n",
+        x = "\nRatio dette publique / produit intérieur brut (%)",
+        title = "Données Reinhart et Rogoff corrigées, 1946-2009\n") +
+   theme_linedraw() +
+   theme(strip.text = element_text(size = rel(1)),
+         panel.grid = element_blank())

> ggsave("reinhart-rogoff.pdf", plot = p,
+        width = 11, height = 8)

3 D’autres outils de visualisations.

3.1 Le package ggfortify

C’est un package qui contient des fonctions prêtes pour des représentations des résultats statistiques.

3.1.1 Séries temporelles.

  • La fonction autoplot détecte la classe de l’objet à tracer et le trace selon cette classe.
> library(ggfortify)
> head(AirPassengers)
[1] 112 118 132 129 121 135
> class(AirPassengers)
[1] "ts"
> ## Un objet ts
> autoplot(AirPassengers)

  • On ajoute quelques décorations.
> p <- autoplot(AirPassengers)
> class(p)
[1] "gg"     "ggplot"
> p + ggtitle('AirPassengers') + xlab('Year') + ylab('Passengers')

3.1.2 Classification non-supervisée

  • Présentation d’une classification avec kmeans
> set.seed(1)
> head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
> p <- autoplot(kmeans(iris[-5], 3), data = iris)
> p

  • Présentation de plusieurs résultats de classification
> res <- lapply(c(3, 4, 5), function(x) kmeans(iris[-5], x))
> autoplot(res, data = iris[-5], ncol = 3)

3.1.3 Analyse en Composantes Principales

  • Présentation des résultats d’une Analyse en Composantes Principales.
> df <- iris[c(1, 2, 3, 4)]
> autoplot(prcomp(df))

> ## Ajouter une couleur avec une variable qualitative supplémentaire.
> autoplot(prcomp(df), data = iris, colour = 'Species')

> # Mettre des labels sur les points avec des convexes de Hulls.
> autoplot(prcomp(df), data = iris, colour = 'Species', shape = FALSE, label.size = 3, frame=T)

> # mettre les groupes dans des ellipses de confiance
> autoplot(prcomp(df), data = iris, colour = 'Species', shape = FALSE, label.size = 3, frame=T, frame.type = 'norm')

> # Faire un biplot de la ACP
> autoplot(prcomp(df), data = iris, colour = 'Species',
+          loadings = TRUE, loadings.colour = 'blue',
+          loadings.label = TRUE, loadings.label.size = 3)

3.1.4 Distributions de probabilités

  • Par exemple on peut représenter la densité d’une loi normale centrée réduite entre -3 et +3.
> library(ggfortify)
> ggdistribution(dnorm, seq(-3, 3, 0.1), mean = 0, sd = 1)

  • Pour tracer la fonction de répartition d’une loi de probabilité
> library(ggfortify)
> ggdistribution(dnorm, seq(-3, 3, 0.1), mean = 0, sd = 1)

  • Pour tracer l’estimation de la densité d’une série d’observations utilisant la commande density
> autoplot(density(rnorm(1:50)), fill = 'green')

3.1.5 Pour le diagnostique des modèles de régression.

  • Diagnostique du modèle linéaire.
> library(ggfortify)
> autoplot(lm(Petal.Width ~ Petal.Length, data = iris), label.size = 3)

  • On peut sélectionner quel diagnostique veut-on représenter en spécifiant certains paramètres de la fenêtre graphique.
> m <- lm(Petal.Width ~ Petal.Length, data = iris)
> autoplot(m, which = 1:6, ncol = 3, label.size = 3)

  • On peut encore personnaliser le graphique
> autoplot(m, which = 1:6, colour = 'dodgerblue3',
+          smooth.colour = 'black', smooth.linetype = 'dashed',
+          ad.colour = 'blue',
+          label.size = 3, label.n = 5, label.colour = 'blue',
+          ncol = 3)

  • On peut colorer certains points selon une variable supplémentaire.
> autoplot(lm(Petal.Width ~ Petal.Length, data = iris), data = iris,
+          colour = 'Species', label.size = 3)

3.1.6 Analyse discrimnante linéaire de Fisher.

  • On présenter les résultats d’une Analyse discriminante locale de Fischer (Voir cours Data Mining)
> library(lfda)
> 
> # Local Fisher Discriminant Analysis (LFDA)
> model <- lfda(iris[-5], iris[, 5], r = 3, metric="plain")
> autoplot(model, data = iris, frame = TRUE, frame.colour = 'Species')

  • Ou d’une analyse discriminante locale semi-supervisée de Fischer.
> model <- self(iris[-5], iris[, 5], beta = 0.1, r = 3, metric="plain")
> autoplot(model, data = iris, frame = TRUE, frame.colour = 'Species')

3.2 La fonction ggpairs du package GGally

Cette fonction permet de visualiser des graphiques multidimensionnel sous différents formats. Voici quelques exemples:

  • On considère les données tips (pourboire obtenus durant une période données en notant quelques caractéristiques des clients)
> data(tips, package = "reshape")
> head(tips)
  total_bill  tip    sex smoker day   time size
1      16.99 1.01 Female     No Sun Dinner    2
2      10.34 1.66   Male     No Sun Dinner    3
3      21.01 3.50   Male     No Sun Dinner    3
4      23.68 3.31   Male     No Sun Dinner    2
5      24.59 3.61 Female     No Sun Dinner    4
6      25.29 4.71   Male     No Sun Dinner    4
  • On peut utiliser la fonction ggpairs pour étudier la relation entre le montant total de la facture et le montant du pourboire.
> library(GGally)
> pm <- ggpairs(tips)
> pm
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

  • On peut choisir les colonnes à représenter.
> pm <- ggpairs(tips, columns = c("total_bill", "time", "tip"), columnLabels = c("Total Bill", "Time of Day", "Tip"))
> pm
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

  • On peut utilisant ggplot2 pour conditionner par rapport à une autre variable qualitative des données.
> library(ggplot2)
> pm <- ggpairs(tips, mapping = aes(color = sex), columns = c("total_bill", "time", "tip"))
> pm
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

3.3 A explorer les packages

4 Les graphiques interactives

4.1 Le package ggvis

4.1.1 Introduction

  • Le but de ggvis est de le rendre facile à construire des graphiques interactifs pour l’exploration des données.

  • ggvis ressemble au package ggplot2 (la grammaire de graphiques), mais il permet de rendre vos graphiques interactives.

  • ggvis intègre également un modèle de programmation réactive similaire à ce qu’on peut avoir avec le package dplyr.

  • Les graphiques produits par ggvis sont des graphiques web et peuvent être intégrés dans pages html.

4.1.2 Premiers exemples.

  • Chaque graphique ggvis doit commencé par la commande ggvis() en spécifiant la variable qui va être présentée sur l’axe des x et une deuxième sur l’axe des y
> library(ggvis)

Attaching package: 'ggvis'
The following object is masked from 'package:ggplot2':

    resolution
> p <- ggvis(mtcars, x = ~wt, y = ~mpg)
  • Quand on exécute p seulement,
> p
Guessing layer_points()
  • ou encore
> layer_points(p)
  • Comme vous pouvez le constater il y a plusieurs commandes du type layer. En voici quelques exemples, on pourrait tracer à la fois les points du diagramme de dispersion et la courbe d’ajustement.
> p<-p%>%layer_points()%>%layer_smooths()
> p
  • Comme avec ggplot2 on peut représenter une troisième variable en utilisant des arguments du type fill, size, stroke….
> mtcars %>% ggvis(~mpg, ~disp, fill = ~vs) %>% layer_points()
  • ou en considérant des tailles différentes.
> mtcars %>% ggvis(~mpg, ~disp, size = ~vs) %>% layer_points()
  • La troisième variable pourrait être catégorique
> mtcars %>% ggvis(~mpg, ~disp, shape = ~factor(cyl)) %>% layer_points()
  • Si on veut colorier d’une seule couleur les points ou utiliser le même format ou la même taille on doit utiliser :=.
> mtcars %>% ggvis(~mpg, ~disp, fill:="red", stroke:="blue") %>% layer_points()
> mtcars %>% ggvis(~wt, ~mpg, size := 300, opacity := 0.4) %>% layer_points()

4.1.3 Intervativité

  • L’avantage avec ggvis c’est qu’on peut ajouter de l’interactivité dans le graphique.
> mtcars %>% 
+   ggvis(~wt, ~mpg, 
+     size := input_slider(10, 100),
+     opacity := input_slider(0, 1)
+   ) %>% 
+   layer_points()
  • On peut aussi introduire de l’interaction dans la représentation d’une variable en histogramme. On par exemple mettre le paramètre width comme variable.
> mtcars %>% 
+   ggvis(~wt) %>% 
+   layer_histograms(width =  input_slider(0, 2, step = 0.10, label = "width"))
  • On peut proposer dans un même graphique plusieurs méthodes d’estimations de la densité d’une variable
> mtcars %>% ggvis(x = ~wt) %>%
+     layer_densities(
+       adjust = input_slider(.1, 2, value = 1, step = .1, label = "Bandwidth adjustment"),
+       kernel = input_select(
+         c("Gaussian" = "gaussian",
+           "Epanechnikov" = "epanechnikov",
+           "Rectangular" = "rectangular",
+           "Triangular" = "triangular",
+           "Biweight" = "biweight",
+           "Cosine" = "cosine",
+           "Optcosine" = "optcosine"),
+         label = "Kernel")
+     )
  • ou encore
> mtcars %>% ggvis(x= ~wt) %>%
+   layer_densities(
+     stroke := input_radiobuttons(c("Purple","Orange","steelblue"), 
+                                  label="Line color"),
+     fill := input_select(c("Purple","Orange","steelblue"), 
+                          label="Fill color")
+     )

4.2 Le package rbokeh

4.2.1 Introduction

  • Bokeh est une bibliothèque de visualisation qui fournit un cadre déclaratif flexible et puissant pour créer des graphiques sur le Web.

  • Bokeh créé des graphiques en HTML et fournit de nombreux mécanismes pour l’interactivité. Bokeh a des interfaces en Python, Scala, Julia, et maintenant R.

  • Bokeh est écrit et maintenu par l’équipe de Bokeh de base composé de plusieurs membres du Continuum Analytics et d’autres membres de la communauté open source.

  • Le package rbokeh est écrit et maintenu par Ryan Hafen (@hafenstats) avec plusieurs contributions des autres. Les contributions sont les bienvenues.

4.2.2 Installation

  • Le package rbokeh s’installe à partir de CRAN
> install.packages("rbokeh")
> library("rbokeh")
  • Les graphiques sont construit en initialisant la figure(), puis en ajoutant des couches sur le grâce à plusieurs commandes disponibles dans rbokeh. L’entrée de données doit être faite en précisant x et y.

4.2.3 Exemple,

  • On va représenter un graphe en nuages des deux variables Sepal.Length et Sepal.Width en colorant par rapport à la variable qualitative Species
> library(rbokeh)
> p <- figure() %>%
+   ly_points(Sepal.Length, Sepal.Width, data = iris,
+     color = Species, glyph = Species,
+     hover = list(Sepal.Length, Sepal.Width))
> p
  • Changer les labels des axes.
> library(rbokeh)
> p <- figure(xlab = "Longeur des sépals",ylab="Largeur des sépals") %>%
+   ly_points(Sepal.Length, Sepal.Width, data = iris,
+     color = Species, glyph = Species,
+     hover = list(Sepal.Length, Sepal.Width))
> p
  • Changer les limites sur les axes.
> p <- figure(xlab = "Longeur des sépals",ylab="Largeur des sépals",
+             xlim=c(4.5,6.5),ylim=c(2.5,3.5)) %>%
+   ly_points(Sepal.Length, Sepal.Width, data = iris,
+     color = Species, glyph = Species,
+     hover = list(Sepal.Length, Sepal.Width))
> p
  • Supprimer les grilles.
> p <- figure(xlab = "Longeur des sépals",ylab="Largeur des sépals",
+             xgrid=F,ygrid=F) %>%
+   ly_points(Sepal.Length, Sepal.Width, data = iris,
+     color = Species, glyph = Species,
+     hover = list(Sepal.Length, Sepal.Width))
> p
  • Zoomer dans un graphique
> p <- figure(xlab = "Longeur des sépals",ylab="Largeur des sépals",
+             padding_factor =1.5) %>%
+   ly_points(Sepal.Length, Sepal.Width, data = iris,
+     color = Species, glyph = Species,
+     hover = list(Sepal.Length, Sepal.Width))
> p
  • Supprimer les axes
> library(rbokeh)
> p <- figure(xlab = "Longeur des sépals",ylab="Largeur des sépals",
+             xaxes=F,yaxes=F) %>%
+   ly_points(Sepal.Length, Sepal.Width, data = iris,
+     color = Species, glyph = Species,
+     hover = list(Sepal.Length, Sepal.Width))
> p
  • Changer la position de la légende
> library(rbokeh)
> p <- figure(legend_location = "bottom_left") %>%
+   ly_points(Sepal.Length, Sepal.Width, data = iris,
+     color = Species, glyph = Species,
+     hover = list(Sepal.Length, Sepal.Width))
> p
  • Supprimer le logo de Bokeh
> p <- figure(logo=NULL) %>%
+   ly_points(Sepal.Length, Sepal.Width, data = iris,
+     color = Species, glyph = Species,
+     hover = list(Sepal.Length, Sepal.Width))
> p
  • Tracer une courbe de régression
> z <- lm(dist ~ speed, data = cars)
> p <- figure(width = 600, height = 600) %>%
+   ly_points(cars, hover = cars) %>%
+   ly_lines(lowess(cars), legend = "lowess") %>%
+   ly_abline(z, type = 2, legend = "lm")
> p
  • Tracer la carte du monde des tailles des populations dans les capitales.
> library(maps)

 # maps v3.1: updated 'world': all lakes moved to separate new #
 # 'lakes' database. Type '?world' or 'news(package="maps")'.  #
> data(world.cities)
> head(world.cities)
                name country.etc   pop   lat  long capital
1 'Abasan al-Jadidah   Palestine  5629 31.31 34.34       0
2 'Abasan al-Kabirah   Palestine 18999 31.32 34.35       0
3       'Abdul Hakim    Pakistan 47788 30.55 72.11       0
4 'Abdullah-as-Salam      Kuwait 21817 29.36 47.98       0
5              'Abud   Palestine  2456 32.03 35.07       0
6            'Abwein   Palestine  3434 32.03 35.20       0
> caps <- subset(world.cities, capital == 1) ## On récupère les capitales
> head(caps)
           name          country.etc     pop    lat    long capital
26       'Amman               Jordan 1303197  31.95   35.93       1
265   Abu Dhabi United Arab Emirates  619316  24.48   54.37       1
280       Abuja              Nigeria  178462   9.18    7.17       1
308       Accra                Ghana 2029143   5.56   -0.20       1
366   Adamstown             Pitcairn      51 -25.05 -130.10       1
382 Addis Abeba             Ethiopia 2823167   9.03   38.74       1
> caps$population <- prettyNum(caps$pop, big.mark = ",")
> head(caps)
           name          country.etc     pop    lat    long capital
26       'Amman               Jordan 1303197  31.95   35.93       1
265   Abu Dhabi United Arab Emirates  619316  24.48   54.37       1
280       Abuja              Nigeria  178462   9.18    7.17       1
308       Accra                Ghana 2029143   5.56   -0.20       1
366   Adamstown             Pitcairn      51 -25.05 -130.10       1
382 Addis Abeba             Ethiopia 2823167   9.03   38.74       1
    population
26   1,303,197
265    619,316
280    178,462
308  2,029,143
366         51
382  2,823,167
> figure(width = 800, padding_factor = 0) %>%
+   ly_map("world", col = "gray") %>%
+   ly_points(long, lat, data = caps, size = 5,
+     hover = c(name, country.etc, population))