ggplot - 绘制 2 个彼此相邻的不同图形

ggplot - plotting 2 different graphs next to each other

我如何将 2 个箱形图并排放置?

例如,假设我想在 3 个足球联赛中比较 "Average goals scored per game at home" 和 "Average goals conceded per game at home",并且为此目的,我想在同一个图表上使用彼此相邻的 2 个箱线图(即相同的轴)以提供准确的视觉表示。

我绘制 1 个箱线图没问题,但我不知道如何将这 2 个图放在同一个轴上。我看到了使用 "maps" 库的解释,这是唯一的方法吗?

作为参考,我的数据如下所示:

    Team Name    Total number of home games  Total goals scored at home  Total Goals conceded at home League

单个箱形图的代码:

ggplot(data=final, aes(x=factor(League),
y=(((GS.Home/Total.Home.Games))), colour=League)) + 
geom_boxplot() + geom_point() + stat_summary(fun.y=mean,
geom="point", shape=5, size=4)+ xlab("League")+ 
ylab("Avg goals scored per Home Game")+ 
ggtitle("Average points per Home Game across Leagues")

您正在寻找这样的东西吗?

# genrate data
df <- data.frame("League" = paste("League", rep(LETTERS[1:3], each = 8)), "Team.Name" = rep(paste("Team", LETTERS[1:8]), 3), "Total.number.of.home.games" = sample(30:32, 24, replace = T), "Total.goals.scored.at.home" = sample(7:40, 24, replace = T), "Total.goals.conceded.at.home" = sample(0:9, 24, replace = T))

# install.packages("reshape2", dependencies = TRUE)
library(reshape2)
dfm <- melt(df[,-3], id.vars=c("Team.Name", "League"))
dfm$Average <- gsub("Total", "Average", dfm[,3])

# install.packages("ggplot2", dependencies = TRUE)
library(ggplot2)

p <- ggplot(dfm, aes(factor(Average), value))
# p + geom_boxplot()
p + geom_boxplot(aes(fill = factor(League))) + scale_fill_brewer()

# if you feel like computes summary statistics by hand, that's still an option.
dfm.agg <- aggregate(value ~ variable + League, data=dfm, mean)
dfm.agg[,1] <- gsub("Total", "Average", dfm.agg[,1])