J'ai recueilli les données d'un ensemble de forums en ligne et j'ai voulu tracer, en utilisant ggplot et facettes (une facette par forum), la matrice qui représente combien de fois l'utilisateur A a répondu à l'utilisateur B.Tracer des matrices multiples dans des facettes avec différents axes xy
Voici le code pour charger un exemple de jouet:
library(ggplot2)
library(dplyr)
df.edges <- data.frame(from = c('forum1_user1', 'forum1_user1',
'forum1_user2', 'forum1_user2',
'forum2_user1', 'forum2_user1',
'forum2_user2', 'forum2_user2',
'forum3_user1', 'forum3_user1',
'forum3_user2', 'forum3_user2'),
to = c('forum1_user1', 'forum1_user2',
'forum1_user1', 'forum1_user2',
'forum2_user1', 'forum2_user2',
'forum2_user1', 'forum2_user2',
'forum3_user1', 'forum3_user2',
'forum3_user1', 'forum3_user2'),
weight = 1:12,
timestamp = 1:12,
subforum = c('forum1', 'forum1', 'forum1', 'forum1',
'forum2', 'forum2', 'forum2', 'forum2',
'forum3', 'forum3', 'forum3', 'forum3'))
J'essaie ceci:
# Sort for later use in scale_discrete
df.edges <- df.edges %>% arrange(timestamp)
gg <- ggplot(df.edges, aes(x = from, y = to, fill = weight)) +
geom_raster() + coord_fixed() +
facet_grid(. ~subforum, scales='fixed') +
scale_x_discrete("from", aes(limits = from))+
scale_y_discrete("to", aes(limits = from)) +
theme_bw() +
theme(axis.line = element_blank(),
axis.text.x = element_text(angle = 90, hjust=1, size=8),
axis.text.y = element_text(hjust=1, size=10),
axis.ticks = element_blank(),
strip.background = element_rect(fill = 'white'),
aspect.ratio = 1) +
ggtitle("Matrix of interactions") + xlab('from') + ylab('to')
print(gg)
qui donne ceci:
Et si je mets l'échelle de la facette scale='free'
:
Cependant, je veux chaque facette pour afficher uniquement les utilisateurs appartenant à ce forum. Les matrices doivent être complètement remplies de 4 cellules dans chacune d'elles.
Une idée?
Je ne pense pas que vous pouvez le faire avec 'facet_grid', essayez d'utiliser' facet_wrap' ou encore tweak vos données..'df.edges [c ("de", "à")] <- lapply (df.edges [c ("de", "à")], gsub, pattern = "forum \\ d + _", replacement = "") ' – user20650