融化后为4列构建ggplot刻面网格

问题描述 投票:0回答:1

我从一个更宽的表开始,融化后我将表分成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轴代表winning_times,并构建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 )
r ggplot2 facet-wrap facet-grid
1个回答
0
投票

如果在您的代码中将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)

enter image description here

这对我来说很好。

DATA

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)
© www.soinside.com 2019 - 2024. All rights reserved.