R ggplot2线两行和所有列

R ggplot2 line two rows and all columns

我有这个数据集:

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

我试过融化,但我认为没有必要,因为它会转置数据并将点值加倍。

我试过以下变体:

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,1], colour = "Young"))

我觉得我想多了,感谢帮助。

试试这个方法。您可以使用 pivot_longer() 重塑为 long 并使用 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()

输出: