Autres types de graphiques y = f(x)
plot 3D, heatmap, carte de densité, données temporelles...
en langage R
Tracer un graphique de type y = f(x) (fonction plot) et le mettre en forme
Superposer d'autres informations (polygones, légende, ellipses...)
Autres types de graphiques (logarithmiques, 3D, données calendaires...)
L'essentiel de cette page !
De nombreuses variantes de graphiques peuvent poser des difficultés.
Comment introduire des données temporelles comme des dates ou des heures ?
Comment ajouter une troisième dimension ? Par un troisième axe (graphique ou 3D) ou par un code couleur (heatmap) ?
Comment illustrer la densité des points lorsqu'on a beaucoup de points ?
Il suffit de suivre les rubriques ci-dessous :
(Nuages de points en carte de densité (density map) pour traduire la densité des points)
(Lissage pour ajouter une 3ème dimension type heatmap)
1. Graphique exprimé en fonction de données temporelles (calendaires)
2. Gestion des axes irréguliers (cassures dans l'axe, échelle logarithmique)
plot3d obtenu avec la librairie rgl sous R CRAN (gif animé)
5. Nuages de points en carte de densité (density map) pour traduire la densité des points : kernel density 2D kde2D
library(MASS) # va générer le kernel (penser à l'installer) (kernel density 2D)
x <- rnorm(100)
y <- rnorm(100)
plot(x,y)
my_kernel <- kde2d(x, y,n=200)
image(my_kernel)
library(raster)
my_raster <- raster(my_kernel)
plot(my_raster)
# n permet de lisser l'image. n grand, image lisse - n petit, image moche
6- Lissage pour ajouter une 3ème dimension type heatmap -
Carte de température, heatmap, pour qu'un graphique de type y = f(x) est une troisième dimension codée par la couleur
Heatmap à partir d'un scatter-plot à 3 dimensions (la troisième dimension sert à colorer les points et les régions autour).
Nécessite la librairie akima
Heatmap à partir de donner matricielles
Nécessite la librairie plotly
Impose d'avoir des donner complètes pour chaque carré d'une zone
Permet d'avoir une interface sous son explorateur internet pour zoomer et dézoomer
# Simuler des données (peut être remplacé par un vecteur de 400 valeurs
x <- rnorm(400,10,3) ; data = c()
for (i in c(0:19)) {indice = i*20;data <- c(data,sort(x[c((indice+1):(indice+10))]),sort(x[c((indice+11):(indice+20))],decreasing=T))}
# Compiler les données en une matrice m
m <- matrix(data, nrow = 20, ncol = 20,byrow=T)
# Tracer le graphique de température
packageVersion('plotly')
plot_ly( x = c("a", "b", "c"), y = c("d", "e", "f"),
z = m, type = "heatmap")
# Aller plus loin : lien externe
# Simuler des données
x <- rnorm(500,20,10) ; y <- rnorm(500,20,10) ; tableau <- data.frame(Axis1 = x,Axis2 = y)
# Charger ggplot2
library("ggplot2")
# Tracer le graphique de densité
sp <- ggplot(tableau, aes(x=Axis1, y=Axis2)) + geom_point()
sp + stat_density_2d(aes(fill = ..level..), geom="polygon")+ scale_fill_gradient(low="blue", high="red")
Carte de densité
Nécessite la librairie ggplot2