Ich sammelte die Daten aus einer Reihe von Online-Foren und wollte plotten, mit ggplot und Facetten (eine Facette pro Forum), die Matrix, wie oft Benutzer A auf Benutzer antwortete B.Plot mehrere Matrizen in Facetten mit verschiedenen XY-Achse
Hier ist der Code ein Spielzeug Beispiel zu laden:
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'))
ich das versuchen:
# 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)
das gibt dies:
Und wenn ich die Facette Skala gesetzt scale='free'
:
Allerdings möchte ich jede Facette nur die Benutzer in diesem Forum gehören, zeigen. Die Matrizen sollten vollständig mit jeweils 4 Zellen gefüllt sein.
Irgendeine Idee?
Ich glaube nicht, dass Sie das mit 'facet_grid' machen können, versuchen Sie' facet_wrap' zu verwenden oder optimieren Sie Ihre Daten..'df.edges [c ("from", "to")] <- lapply (df.edges [c ("von", "zu")], gsub, pattern = "forum \\ d + _", ersatz = "") ' – user20650