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])
我如何将 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])