微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R ggplot2行两行,所有列

如何解决R ggplot2行两行,所有列

我有这个数据集:

structure(list(AgeGroup = c("Old","Young"),Point.1 = c(0.401899407258065,0.432845035714286),Point.2 = c(0.435610404,0.448826385964912
),Point.3 = c(0.466951088,0.473339649122807),Point.4 = c(0.490997664,0.505416649122807),Point.5 = c(0.51047508,0.517228789473684
),Point.6 = c(0.519614064,0.520077087719298),Point.7 = c(0.524924236,0.522939438596491),Point.8 = c(0.535448152,0.523846929824561
),Point.9 = c(0.539298204,0.529132140350877),Point.10 = c(0.546288992,0.535221877192982),Point.11 = c(0.552286756,0.544069684210526
),Point.12 = c(0.548644056,0.547988701754386),Point.13 = c(0.546028996,0.556100789473684),Point.14 = c(0.551464336,0.557342807017544
),Point.15 = c(0.55835804,0.552995140350877),Point.16 = c(0.560958056,0.555753035087719),Point.17 = c(0.566631508,0.553254912280702
),Point.18 = c(0.573644824,0.557015719298246),Point.19 = c(0.579504268,0.560797315789474),Point.20 = c(0.583600364,0.560459526315789
),Point.21 = c(0.591889884,0.563138245614035),Point.22 = c(0.598549332,0.578847140350877),Point.23 = c(0.605920632,0.59655149122807
),Point.24 = c(0.612308084,0.611475473684211),Point.25 = c(0.618838952,0.627695631578947),Point.26 = c(0.626865524,0.640329719298246
),Point.27 = c(0.634642932,0.642362438596491),Point.28 = c(0.639958892,0.640706877192982),Point.29 = c(0.642219468,0.654251789473684
),Point.30 = c(0.651740076,0.674775824561404),Point.31 = c(0.657197604,0.679311385964912),Point.32 = c(0.657618572,0.673946421052632
),Point.33 = c(0.653554616,0.67093849122807),Point.34 = c(0.648990388,0.673238403508772),Point.35 = c(0.643885328,0.669246245614035
),Point.36 = c(0.636234632,0.670007543859649),Point.37 = c(0.632127604,0.667657561403509),Point.38 = c(0.631252172,0.665906228070175
),Point.39 = c(0.637404984,0.677649561403509),Point.40 = c(0.6451598,0.679067614035088),Point.41 = c(0.648019716,0.688604824561403
),Point.42 = c(0.645375244,0.692729175438596),Point.43 = c(0.647187664,0.691994543859649),Point.44 = c(0.651923432,0.681522859649123
),Point.45 = c(0.650062976,0.674073456140351),Point.46 = c(0.638525956,0.660092263157895),Point.47 = c(0.627772732,0.652689456140351
),Point.48 = c(0.615988064,0.650307087719298),Point.49 = c(0.599147952,0.651349771929825),Point.50 = c(0.584897698795181,0.63722649122807
)),class = "data.frame",row.names = c(NA,-2L))

这50个点的子集如下:

     AgeGroup   Point.1   Point.2   Point.3   Point.4   Point.5   Point.6   Point.7   Point.8   Point.9  Point.10  Point.11  Point.12  Point.13  Point.14  Point.15  Point.16
1      Old 0.4018994 0.4356104 0.4669511 0.4909977 0.5104751 0.5196141 0.5249242 0.5354482 0.5392982 0.5462890 0.5522868 0.5486441 0.5460290 0.5514643 0.5583580 0.5609581
2    Young 0.4328450 0.4488264 0.4733396 0.5054166 0.5172288 0.5200771 0.5229394 0.5238469 0.5291321 0.5352219 0.5440697 0.5479887 0.5561008 0.5573428 0.5529951 0.5557530

我很难在一张图上绘制所有列,其中X只是1:50刻度线,Y是每个点的value,颜色由AgeGroup编码。

我已经尝试过融化,但是我认为这没有必要,因为它可以转置数据并使Point值加倍。

我尝试了以下变化:

ggplot(YaxL,aes(x=1:50,y=YaxL[2:51])) + geom_point()

   ggplot(YaxL,aes(x = 1:50)) + 
      geom_line(aes(y = YaxLDF[1,1],colour = "Old")) + 
      geom_line(aes(y = YaxLDF[2,colour = "Young"))

我觉得我想得太多了,请帮助。

解决方法

尝试这种方法。您可以使用pivot_longer()重塑形状并使用separate()函数来提取点位置。之后,该图的设计非常实用。我已将您共享的数据用作YaxL。始终首先尝试重塑数据,然后可以轻松构建图。这里的代码:

library(tidyverse)
#Data process and plot
YaxL %>% pivot_longer(-1) %>%
  separate(name,c('name','x'),sep='\\.') %>% 
  mutate(x=as.numeric(x)) %>%
  dplyr::select(-name) %>%
  ggplot(aes(x=x,y=value,color=AgeGroup,group=AgeGroup))+
  geom_point()

输出:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。