r - 融化后为 4 列构建 ggplot facet 网格
问题描述
我从一张更宽的桌子开始,融化后我把桌子变成了 4 列,如下所示:
team DATE Rank winning_times
team1 20180925 place1 1646
team2 20180925 place1 876
team3 20180925 place1 601
team4 20180925 place1 438
team5 20180925 place1 321
team1 20180925 place2 1546
team2 20180925 place2 976
team3 20180925 place2 501
team4 20180925 place2 338
team5 20180925 place2 421
team1 20180925 place3 2546
team2 20180925 place3 476
team3 20180925 place3 501
team4 20180925 place3 638
team5 20180925 place3 121
team1 20180926 place1 1046
team2 20180926 place1 806
team3 20180926 place1 61
team4 20180926 place1 48
team5 20180926 place1 31
team1 20180925 place2 1446
team2 20180925 place2 276
team3 20180925 place2 201
team4 20180925 place2 238
team5 20180925 place2 221
我的目标是构建一个图,其中 X 轴代表日期,y 轴代表获胜时间,并构建一个 facet_grid 或 facet_wrap。但是当我尝试做 facet_grid 我得到
geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic?
这也是一个大型数据集,其中每个团队都有 30 天的数据,代表他们获得的每个位置以及获胜时间。
ggplot(data=df.m,
aes(x=factor(DATE), y=winning_times,
group=Rank,
shape=team,
color=team)) +
geom_line() +
geom_point() +
scale_x_discrete("DATE") +
scale_y_continuous("WiningTimes") +
facet_grid(Rank ~ team )
解决方案
如果我在您的代码中更改DisplayedTimes
为winning_times
,我可以创建以下图。
library(ggplot2)
ggplot(data=df.m,
aes(x = factor(DATE), y = winning_times,
group = Rank,
shape = team,
color = team)) +
geom_line() +
geom_point() +
scale_x_discrete("DATE") +
scale_y_continuous("WiningTimes") +
facet_grid(Rank ~ team)
这对我来说看起来不错。
更新
带有直方图的版本。
library(ggplot2)
df.m$DATE <- factor(df.m$DATE)
ggplot(data=df.m,
aes(x = winning_times,
fill = DATE,
color = DATE)) +
geom_histogram(alpha = 0.5, position = "identity") +
scale_x_continuous("WiningTimes") +
facet_grid(Rank ~ team)
数据
df.m <- read.table(text = " team DATE Rank winning_times
team1 20180925 place1 1646
team2 20180925 place1 876
team3 20180925 place1 601
team4 20180925 place1 438
team5 20180925 place1 321
team1 20180925 place2 1546
team2 20180925 place2 976
team3 20180925 place2 501
team4 20180925 place2 338
team5 20180925 place2 421
team1 20180925 place3 2546
team2 20180925 place3 476
team3 20180925 place3 501
team4 20180925 place3 638
team5 20180925 place3 121
team1 20180926 place1 1046
team2 20180926 place1 806
team3 20180926 place1 61
team4 20180926 place1 48
team5 20180926 place1 31
team1 20180925 place2 1446
team2 20180925 place2 276
team3 20180925 place2 201
team4 20180925 place2 238
team5 20180925 place2 221 ",
header = TRUE, stringsAsFactors = FALSE)