Cette page est un peu à part : elle pourrait se disperser dans toute la rubrique graphique (et elle le fait d'ailleurs).
Elle est là pour présenter des librairies réputées de visualisation de données.
Ces librairies, il s'agit de lattice mais surtout de ggplot/ggplot2 et plotly. Lattice est moins connu mais se rapproche de la syntaxe classique de R.
Les deux autres ggplot et ploly donnent la possibilité à l'utilisateur d'ajouter, de supprimer ou de modifier des composants d'un graphe à un niveau élevé d'abstraction (bon forcément, c'est plus lent).
C'est un peu un langage dans le langage. Cela permet d'obtenir des graphiques très complexe très simplement MAIS cela requiert un apprentissage complémentaire et trouvera rapidement ses limites si on veut aller au-delà du format de base imposé par ces librairies.
Réaliser très rapidement n'importe quelle type de graphique avec une jolie mise en forme peut se faire avec lattice (rudimentaire) ou avec ggplot2 dont la prise en main est un peu délicate mais qui ira aussi loin que vous voudrez avec une mise en forme toutefois plus limitée qu'avec R natif.
Inconvénients : ça apporte un plus un la syntaxe de R mais ça exige d'ajouter de nouvelles commandes à son panel de connaissances.
Avantages : ça supporte bien le paramétrage de formatage de base de R.
Pour installer et exécuter lattice
install.packages("lattice")
library("lattice")
Pour ouvrir les données (en exemple ici)
data<- read.table(file.choose(),header=T,sep="\t") ; head(data) # Ouvrir exercice4.txt
# Formule xyplot(y~x|A)
xyplot(data$Poids~data$Age|factor(data$Certification),xlab="Age",ylab="Poids")
# Formule xyplot(y~x|A*B)
xyplot(data$Poids~data$Age|factor(data$Certification)*factor(data$Sexe),xlab="Age",ylab="Poids")
densityplot(data$Poids,col="red",lwd=2,xlab="Poids")
# formule cloud(z~x*y)
cloud(data$Prix~data$Age*data$Poids,xlab="Poids",ylab="Age",zlab="Prix",col="orange")
Inconvénients : un langage dans le langage R. ggplot2 présente un au niveau d'abstraction dans sa rédaction. Sa prise en main est donc (pour le moins au début, peu intuitive). Il est très laborieux de contourner les limites graphiques de ggplot2. Si une fonction est limitée, on aura dû mal à changer sa forme. Enfin, ggplot2 est relativement lent pour les gros jeux de données.
Avantages : très performant, son potentiel de réalisation de graphiques est extraordinaire. On peut superposer une quantité d'information conséquente et lui donner une interfacte avec plotly (une autre librairie).
Pour aller plus loin avec ggplot2 : mieux vaut changer de site internet. Ce site ne développe pas en profondeur ggplot2 qui nécessiterait un site en lui-même.
library("ggplot2")
ggplot(data, aes(x = Age, y=Poids))+
geom_point(alpha=.05,col="red")+
facet_grid(Certification~Sexe)
On voit dans cette syntaxe qu'il suffit de mettre un "+" pour ajouter des informations au graphique !
library("ggplot2")
p <- ggplot(iris, aes(x = Sepal.Length, y=Sepal.Width,colour=factor(Species))) +
geom_point(alpha=.9)+ facet_grid(. ~ Species)
p
p+geom_line(colour="green")
p+stat_summary(fun.y=mean, colour="red", geom="line")
install.packages("ggridges")
library(ggplot2)
library(ggridges)
data(iris)
ggplot(iris, aes(x = Sepal.Length, y = Species)) +
geom_density_ridges(aes(fill = Species)) +
scale_fill_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))
library(openxlsx)
data = read.xlsx(file.choose()) # data étudiants
colnames(data)
colnames(data)[7] <- "Sport"
ggplot(data, aes(x=Poids, y=Sport, color=Sexe, point_color=Sexe, fill=Sexe)) +
geom_density_ridges(
jittered_points=TRUE, scale = .95, rel_min_height = .01,
point_shape = "|", point_size = 3, size = 0.25,
position = position_points_jitter(height = 0)
) +
scale_y_discrete(expand = c(.01, 0)) +
scale_x_continuous(expand = c(0, 0), name = "height [cm]") +
scale_fill_manual(values = c("#D55E0050", "#0072B250"), labels = c("female", "male")) +
scale_color_manual(values = c("#D55E00", "#0072B2"), guide = "none") +
scale_discrete_manual("point_color", values = c("#D55E00", "#0072B2"), guide = "none") +
guides(fill = guide_legend(
override.aes = list(
fill = c("#D55E00A0", "#0072B2A0"),
color = NA, point_color = NA))
) +
ggtitle("Répartition des étudiants faisant du sport par sexe") +
theme_ridges(center = TRUE)
geom_point(size, shape, colour, alpha)
Exemple à intégrer
p <- ggplot(data, aes(x = date, y=PCB_52))+
geom_point(col="red")+ facet_grid(Species~Lieu)+
stat_summary(fun.y=mean, colour="red", geom="line")
p+geom_point(aes(x = date, y=PCB_28))+stat_summary(aes(x = date, y=PCB_28),fun.y=mean, colour="black", geom="line")+
geom_point(aes(x = date, y=PC_101),colour="blue")+stat_summary(aes(x = date, y=PC_101),fun.y=mean, colour="blue", geom="line")+
geom_point(aes(x = date, y=PCB_118),colour="green")+stat_summary(aes(x = date, y=PCB_118),fun.y=mean, colour="green", geom="line")
Les graphiques peuvent être animés avec gganimate de ggplot.