Recherche…


Remarques

ggplot2 a son propre site de référence parfait http://ggplot2.tidyverse.org/ .

La plupart du temps, il est plus commode d'adapter la structure ou le contenu des données tracées (par exemple, un data.frame ) que d'ajuster les choses par la suite.

Rstudio publie un « Visualisation de données avec ggplot2 » très utile antisèche qui se trouve ici .

Scatter Plots

Nous traçons un simple diagramme de dispersion en utilisant le jeu de données d’iris intégré comme suit:

library(ggplot2)
ggplot(iris, aes(x = Petal.Width, y = Petal.Length, color = Species)) + 
  geom_point()

Cela donne: Exemple de diagramme de dispersion à l'aide d'un jeu de données iris

Affichage de plusieurs parcelles

Afficher plusieurs tracés dans une image avec les différentes fonctions de facet . Un avantage de cette méthode est que tous les axes partagent la même échelle entre les graphiques, ce qui permet de les comparer facilement en un coup d’œil. Nous utiliserons le jeu de données mpg inclus dans ggplot2 .

Enroulez les graphiques ligne par ligne (tente de créer une disposition carrée):

ggplot(mpg, aes(x = displ, y = hwy)) + 
  geom_point() + 
  facet_wrap(~class)

Afficher plusieurs graphiques sur une ligne, plusieurs colonnes:

ggplot(mpg, aes(x = displ, y = hwy)) + 
  geom_point() + 
  facet_grid(.~class)

Afficher plusieurs graphiques sur une colonne, plusieurs lignes:

ggplot(mpg, aes(x = displ, y = hwy)) + 
  geom_point() + 
  facet_grid(class~.)

Afficher plusieurs graphiques dans une grille par 2 variables:

ggplot(mpg, aes(x = displ, y = hwy)) + 
  geom_point() + 
  facet_grid(trans~class) #"row" parameter, then "column" parameter

Préparez vos données pour le traçage

ggplot2 fonctionne mieux avec une longue trame de données. Les exemples de données suivants représentent les prix des bonbons sur 20 jours différents, dans un format décrit comme large, car chaque catégorie comporte une colonne.

set.seed(47)
sweetsWide <- data.frame(date      = 1:20,
                         chocolate = runif(20, min = 2, max = 4),
                         iceCream  = runif(20, min = 0.5, max = 1),
                         candy     = runif(20, min = 1, max = 3))

head(sweetsWide)
##   date chocolate  iceCream    candy
## 1    1  3.953924 0.5890727 1.117311
## 2    2  2.747832 0.7783982 1.740851
## 3    3  3.523004 0.7578975 2.196754
## 4    4  3.644983 0.5667152 2.875028
## 5    5  3.147089 0.8446417 1.733543
## 6    6  3.382825 0.6900125 1.405674

Pour convertir sweetsWide au format long à utiliser avec ggplot2 , vous ggplot2 utiliser plusieurs fonctions utiles de la base R et des packages reshape2 , data.table et tidyr (dans l'ordre chronologique):

# reshape from base R
sweetsLong <- reshape(sweetsWide, idvar = 'date', direction = 'long', 
                      varying = list(2:4), new.row.names = NULL, times = names(sweetsWide)[-1])

# melt from 'reshape2'
library(reshape2)
sweetsLong <- melt(sweetsWide, id.vars = 'date')

# melt from 'data.table'
# which is an optimized & extended version of 'melt' from 'reshape2'
library(data.table)
sweetsLong <- melt(setDT(sweetsWide), id.vars = 'date')

# gather from 'tidyr'
library(tidyr)
sweetsLong <- gather(sweetsWide, sweet, price, chocolate:candy)

Le tout donne un résultat similaire:

head(sweetsLong)
##   date     sweet    price
## 1    1 chocolate 3.953924
## 2    2 chocolate 2.747832
## 3    3 chocolate 3.523004
## 4    4 chocolate 3.644983
## 5    5 chocolate 3.147089
## 6    6 chocolate 3.382825

Reportez-vous également à la section Remodelage des données entre les formulaires longs et les formulaires longs pour obtenir des détails sur la conversion des données entre le format long et le format large .

Les sweetsLong qui en sweetsLong ont une colonne de prix et une colonne décrivant le type de bonbon. Le traçage est maintenant beaucoup plus simple:

library(ggplot2)
ggplot(sweetsLong, aes(x = date, y = price, colour = sweet)) + geom_line()

graphique linéaire des données de bonbons

Ajouter des lignes horizontales et verticales pour tracer

Ajouter une ligne horizontale commune pour toutes les variables catégorielles

# sample data
df <- data.frame(x=('A', 'B'), y = c(3, 4))

p1 <- ggplot(df, aes(x=x, y=y)) 
        + geom_bar(position = "dodge", stat = 'identity') 
        + theme_bw()

p1 + geom_hline(aes(yintercept=5), colour="#990000", linetype="dashed")

intrigue1

Ajouter une ligne horizontale pour chaque variable catégorielle

# sample data
df <- data.frame(x=('A', 'B'), y = c(3, 4))

# add horizontal levels for drawing lines
df$hval <- df$y + 2

p1 <- ggplot(df, aes(x=x, y=y)) 
        + geom_bar(position = "dodge", stat = 'identity') 
        + theme_bw()

p1 + geom_errorbar(aes(y=hval, ymax=hval, ymin=hval), colour="#990000", width=0.75)

intrigue2

Ajouter une ligne horizontale sur des barres groupées

# sample data
df <- data.frame(x = rep(c('A', 'B'), times=2), 
             group = rep(c('G1', 'G2'), each=2), 
             y = c(3, 4, 5, 6), 
             hval = c(5, 6, 7, 8))

p1 <- ggplot(df, aes(x=x, y=y, fill=group)) 
        + geom_bar(position="dodge", stat="identity")

p1 + geom_errorbar(aes(y=hval, ymax=hval, ymin=hval), 
               colour="#990000", 
               position = "dodge", 
               linetype = "dashed")

intrigue3

Ajouter une ligne verticale

# sample data
df <- data.frame(group=rep(c('A', 'B'), each=20), 
                 x = rnorm(40, 5, 2), 
                 y = rnorm(40, 10, 2))

p1 <-  ggplot(df, aes(x=x, y=y, colour=group)) + geom_point()

p1 + geom_vline(aes(xintercept=5), color="#990000", linetype="dashed")

entrer la description de l'image ici

Diagramme à barres vertical et horizontal

ggplot(data = diamonds, aes(x = cut, fill =color)) +
  geom_bar(stat = "count", position = "dodge")

entrer la description de l'image ici

il est possible d'obtenir un graphique à barres horizontales en ajoutant simplement esthétique coord_flip () à l'objet ggplot:

  ggplot(data = diamonds, aes(x = cut, fill =color)) +
  geom_bar(stat = "count", position = "dodge")+
  coord_flip()

entrer la description de l'image ici

Complot de violon

Les tracés de violon sont des estimations de densité de noyau reflétées dans le plan vertical. Ils peuvent être utilisés pour visualiser plusieurs distributions côte à côte, la mise en miroir aidant à mettre en évidence les différences.

ggplot(diamonds, aes(cut, price)) +
  geom_violin()

complot de violon de base

Les tracés de violon sont nommés pour leur ressemblance avec l'instrument de musique, ce qui est particulièrement visible lorsqu'ils sont couplés à une boîte à moustaches superposée. Cette visualisation décrit ensuite les distributions sous-jacentes à la fois en termes de résumé de 5 nombres de Tukey (sous forme de boîtes à moustaches) et d'estimations de densité continue complète (violons).

ggplot(diamonds, aes(cut, price)) +
  geom_violin() +
  geom_boxplot(width = .1, fill = "black", outlier.shape = NA) +
  stat_summary(fun.y = "median", geom = "point", col = "white")

complot de violon avec boxplot

Produire des parcelles de base avec qplot

qplot est conçu pour être similaire à la fonction base r plot() , en essayant de toujours tracer vos données sans exiger trop de spécifications.

qplot de base

qplot(x = disp, y = mpg, data = mtcars)

entrer la description de l'image ici

ajouter des couleurs

qplot(x = disp, y = mpg, colour = cyl,data = mtcars)

entrer la description de l'image ici

ajouter un plus lisse

qplot(x = disp, y = mpg, geom = c("point", "smooth"), data = mtcars)

entrer la description de l'image ici



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow