Можно делать то, что вы описываете, но полученный график ужасен из-за количества стран на оси x (42, с тремя полосами в каждой) и ограничений базовых R barplot
.
Вот как мы можем получить данные в правильном формате:
winners <- evro2007[evro2007$`To country` == "Ukraine" |
evro2007$`To country` == "Russia" |
evro2007$`To country` == "Serbia",]
self <- data.frame(`From country` = c("Serbia", "Ukraine", "Russia"),
`To country` = c("Serbia", "Ukraine", "Russia"),
Points = c(0, 0, 0), stringsAsFactors = FALSE)
names(self) <- names(winners)
winners <- rbind(winners, self)
winners <- winners[order(winners$`From country`, winners$`To country`),]
Однако базовая диаграмма R выглядит так:
barplot(Points ~ `To country` + `From country`,
data = winners, beside = TRUE, cex.names = 0.3)
Страны неразборчивы, а сюжет сложно интерпретировать.
Тогда как, используя ggplot
:
winners$`To country` <- factor(winners$`To country`,
levels = c("Serbia", "Ukraine", "Russia"))
ggplot(winners, aes(`To country`, Points, fill = `To country`)) +
geom_col() +
facet_wrap(.~`From country`) +
theme(axis.text.x = element_blank())
, получаем: