Je suis en train de tracer les deux variables où N=700K. Le problème, c'est qu'il y a trop de chevauchement, de sorte que le terrain devient essentiellement un bloc de couleur noire. Est-il possible de l'avoir en niveaux de gris "cloud", où la noirceur de l'intrigue est une fonction du nombre de points dans une région? En d'autres termes, au lieu de montrer différents points, je veux l'intrigue à un "nuage" de, avec des la plus le nombre de points dans une région, le plus sombre de cette région.
Réponses
Trop de publicités?Une façon de traiter cette question est avec alpha blending, qui fait de chaque point légèrement transparent. Donc, les régions apparaissent plus sombres qui ont plus de point de tracé sur eux.
C'est facile à faire dans ggplot2
:
df <- data.frame(x = rnorm(5000),y=rnorm(5000))
ggplot(df,aes(x=x,y=y)) + geom_point(alpha = 0.3)
Un autre moyen pratique de traiter cette question est (et probablement plus approprié pour le nombre de points que vous avez) est hexagonale, binning:
ggplot(df,aes(x=x,y=y)) + stat_binhex()
Et il y a aussi des vieux rectangulaire binning (image omis), qui est plus proche de votre traditionnelle heatmap:
ggplot(df,aes(x=x,y=y)) + geom_bin2d()
Vous pouvez également jeter un oeil à l' ggsubplot
package. Ce package met en œuvre des fonctionnalités qui ont été présentés par le Hadley Wickham en 2011 (http://blog.revolutionanalytics.com/2011/10/ggplot2-for-big-data.html).
(Dans la suite, j'ai inclure les "points"de la couche à des fins d'illustration.)
library(ggplot2)
library(ggsubplot)
# Make up some data
set.seed(955)
dat <- data.frame(cond = rep(c("A", "B"), each=5000),
xvar = c(rep(1:20,250) + rnorm(5000,sd=5),rep(16:35,250) + rnorm(5000,sd=5)),
yvar = c(rep(1:20,250) + rnorm(5000,sd=5),rep(16:35,250) + rnorm(5000,sd=5)))
# Scatterplot with subplots (simple)
ggplot(dat, aes(x=xvar, y=yvar)) +
geom_point(shape=1) +
geom_subplot2d(aes(xvar, yvar,
subplot = geom_bar(aes(rep("dummy", length(xvar)), ..count..))), bins = c(15,15), ref = NULL, width = rel(0.8), ply.aes = FALSE)
Cependant, cette caractéristiques de roches si vous avez une troisième variable de contrôle.
# Scatterplot with subplots (including a third variable)
ggplot(dat, aes(x=xvar, y=yvar)) +
geom_point(shape=1, aes(color = factor(cond))) +
geom_subplot2d(aes(xvar, yvar,
subplot = geom_bar(aes(cond, ..count.., fill = cond))),
bins = c(15,15), ref = NULL, width = rel(0.8), ply.aes = FALSE)
Ou une autre approche serait d'utiliser smoothScatter()
:
smoothScatter(dat[2:3])