R ggplot:3D矩阵:在图形中绘制多条线,并在同一页面上绘制多个图形

R ggplot:3D矩阵:在图形中绘制多条线,并在同一页面上绘制多个图形,r,ggplot2,data-visualization,data-manipulation,R,Ggplot2,Data Visualization,Data Manipulation,我有一个形状为[1:1000,1:221,1:2]的3D数据矩阵(df) 可再现的示例如下所示: d <- as.data.frame( matrix( 1:(5*2*3), 10, 3)) df = array( unlist(d), dim=c(5, 2, 3)) df , , 1 [,1] [,2] [1,] 1 6 [2,] 2 7 [3,] 3 8 [4,] 4 9 [5,] 5 10 , , 2

我有一个形状为[1:1000,1:221,1:2]的3D数据矩阵(df)

可再现的示例如下所示:

d <- as.data.frame( matrix( 1:(5*2*3), 10, 3))
df = array( unlist(d), dim=c(5, 2, 3)) 
df
, , 1

     [,1] [,2]
[1,]    1    6
[2,]    2    7
[3,]    3    8
[4,]    4    9
[5,]    5   10

, , 2

     [,1] [,2]
[1,]   11   16
[2,]   12   17
[3,]   13   18
[4,]   14   19
[5,]   15   20

, , 3

     [,1] [,2]
[1,]   21   26
[2,]   22   27
[3,]   23   28
[4,]   24   29
[5,]   25   30

d使用数据,您可以首先在数据帧中重新组织阵列(可能有更简单的方法来实现这一部分):

final_df=NULL
nb_人=3
trail=NULL
person=NULL
适用于(i/1:nb_人){
最终测向=rbind(最终测向,测向[,i])
trail=c(trail,1:dim(df[,i])[1])
person=c(person,rep(i,dim(df[,i])[1]))
}
最终测向=数据帧(最终测向)
colnames(final_df)=c(“开始”、“结束”)
最终的_df$trail=trail
最终费用$人=人
起点终点跟踪人
1      1   6     1      1
2      2   7     2      1
3      3   8     3      1
4      4   9     4      1
5      5  10     5      1
6     11  16     1      2
7     12  17     2      2
8     13  18     3      2
9     14  19     4      2
10    15  20     5      2
11    21  26     1      3
12    22  27     2      3
13    23  28     3      3
14    24  29     4      3
15    25  30     5      3
然后,您可以使用软件包
tidyr
中的
pivot\u longer
功能对其进行重塑(如果安装并加载
tidyverse
,将同时安装并加载
tidyr
ggplot2

库(tidyverse)
最终的改变形状的%pivot更长(,-c(轨迹,人物),名称改为“变量”,值改为“值”)
#一个tibble:30x4
跟踪人员变量值
1开始1
2 1完6
3 2 1开始2
4 2 1完7
5 3 1开始3
6 3 1完8
7 4 1开始4
8 4 1完9
9 5 1开始5
10 5 1完10
#…还有20行
对于较旧版本的
tidyr
如果您有较旧版本的
tidyr
(低于1.0.0),则应使用
gather
而不是
pivot\u longer
。(更多信息请参见此处:)

final\u df\u重塑的%聚集(,-c(trail,person),key=“Variable”,value=“value”)
并使用以下代码绘制它:

ggplot(最终的df整形,aes(x=变量,y=值,组=as.factor(trail),颜色=as.factor(trail)))+
几何点()+
geom_线()+
平面网格(.~人)+
刻度x离散(限值=c(“开始”、“结束”))

它回答了你的问题吗


如果你必须为220个不同的人做这件事,我不确定这是否会形成一个真正清晰的情节。也许你应该考虑另一种方法来绘制它或提取有用的信息

您能否提供一个可复制的阵列示例?添加了可复制的示例我相应地编辑了我的答案,让我知道它是否是我尝试时您正在查找的,我不能。它返回一个错误,说找不到函数“pivot\u longer”。有没有其他解决办法?非常感谢!要使用
pivot\u更长时间
,您必须安装
tidyverse
或至少
tidyr
软件包。是的,我的rstudio中安装了tidyverse,但它仍然找不到“pivot_longer”,因此当我尝试安装更新版本的tidyverse时,我的计算机崩溃。所以,我想知道是否还有其他方法。你有什么版本的R和tidyverse?“R版本3.4.1(2017-06-30)”