D'accord, comme point de départ, voici quelques exemples de données. Chacun est aléatoire, avec un décalé à (2,2).
df1 <-
data.frame(
x = rnorm(1000)
, y = rnorm(1000)
)
df2 <-
data.frame(
x = rnorm(1000, 2)
, y = rnorm(1000, 2)
)
Pour veiller à ce que les bacs sont identiques, il est préférable de construire un objet hexbin
. Pour ce faire, j'utilise le bind_rows
de dplyr
pour garder une trace de quelles données proviennent les données (ce serait encore plus facile si vous aviez un seul data.frame avec une variable de regroupement).
bothDF <-
bind_rows(A = df1, B = df2, .id = "df")
bothHex <-
hexbin(x = bothDF$x
, y = bothDF$y
, IDs = TRUE
)
Ensuite, nous utilisons un mélange de hexbin
et dplyr
pour compter les occurrences de chacun dans chaque cellule. Tout d'abord, appliquer à travers les bacs, la construction d'une table (doit utiliser factor
pour s'assurer que tous les niveaux sont affichés, pas nécessaire si votre colonne est déjà un facteur). Ensuite, il le simplifie et construit un data.frame qui est ensuite manipulé avec mutate
pour calculer la différence de nombre, puis rejoint une table qui donne les valeurs x et y pour chacun des identifiants.
counts <-
hexTapply(bothHex, factor(bothDF$df), table) %>%
simplify2array %>%
t %>%
data.frame() %>%
mutate(id = as.numeric(row.names(.))
, diff = A - B) %>%
left_join(data.frame(id = [email protected], hcell2xy(bothHex)))
head(counts)
donne:
A B id diff x y
1 1 0 7 1 -1.3794467 -3.687014
2 1 0 71 1 -0.8149939 -3.178209
3 1 0 79 1 1.4428172 -3.178209
4 1 0 99 1 -1.5205599 -2.923806
5 2 0 105 2 0.1727985 -2.923806
6 1 0 107 1 0.7372513 -2.923806
Enfin, nous utilisons ggplot2
pour tracer les données résultantes, car il offre plus de contrôle (et la possibilité d'utiliser plus facilement une autre variable que compte comme remplit) que hexbin
lui-même.
counts %>%
ggplot(aes(x = x, y = y
, fill = diff)) +
geom_hex(stat = "identity") +
coord_equal() +
scale_fill_gradient2()
De là, il est facile de jouer avec des haches, des couleurs, etc.
Vous avez seulement créé une parcelle. Lisez des exemples de construction de données simulées et ajoutez du code à votre corps de quesiton qui produit deux ensembles de données qui ressemblent à ce que vous utilisez. –