R ggplot facet\换行打印,其中每个打印的线名称都会更改

R ggplot facet\换行打印,其中每个打印的线名称都会更改,r,ggplot2,R,Ggplot2,你好(来自一个新手) 我正在用词识别的神经网络模型进行模拟。该模型基本上对词典中的每个单词都有多个时间对齐的检测器(例如,“dog”实际上有67个检测器,在连续的时间点对齐)。因此,模拟的输出是一个文件,在模拟的每个时间步激活每个单词检测器。因此,如果模拟运行100个周期,那么该文件将具有所有67个狗单元的100个时间戳激活记录,并且字典中的每个其他单词都具有相同的激活记录(例如,100个单词x 67个数据点)。我对词典中的每个单词都进行了模拟,现在我想使用facet_wrap为每个模拟绘制一个

你好(来自一个新手)

我正在用词识别的神经网络模型进行模拟。该模型基本上对词典中的每个单词都有多个时间对齐的检测器(例如,“dog”实际上有67个检测器,在连续的时间点对齐)。因此,模拟的输出是一个文件,在模拟的每个时间步激活每个单词检测器。因此,如果模拟运行100个周期,那么该文件将具有所有67个狗单元的100个时间戳激活记录,并且字典中的每个其他单词都具有相同的激活记录(例如,100个单词x 67个数据点)。我对词典中的每个单词都进行了模拟,现在我想使用facet_wrap为每个模拟绘制一个图,绘制10个最活跃单词随时间的激活

我已经找到了将输出转换成时间X检测器矩阵的方法,然后根据每列的峰值激活对矩阵进行排序。然后我删除了除前10列以外的所有内容。对于像club这样的单词的单个模拟,我得到的数据如下所示(仅显示4个单词的输出标题:

> head(traceOut.top[,c(1,2,3,4,12)])
  time kl^b.s3 kl^b.s4 klu.s3 Target
1    0   -0.01   -0.01  -0.01   kl^b
2    1   -0.01   -0.01  -0.01   kl^b
3    2   -0.01   -0.01  -0.01   kl^b
4    3   -0.01   -0.01  -0.01   kl^b
5    4   -0.01   -0.01  -0.01   kl^b
6    5   -0.01   -0.01  -0.01   kl^b
列名表示单词detect+alignment。“kl^b.s3”表示切片3处“club”(kl^b)的检测器(激活在几十个时间步后开始改变)。目标列表示已向模型提供的输入

然后我融化数据:

> traceOut.m2 <-melt(as.data.frame(traceOut.top),id.vars=c("time","Target"),variable.name="Word")

> head(traceOut.m2)
  time Target    Word Activation
1     0   kl^b kl^b.s3      -0.01
2     1   kl^b kl^b.s3      -0.01
3     2   kl^b kl^b.s3      -0.01
4     3   kl^b kl^b.s3      -0.01
5     4   kl^b kl^b.s3      -0.01
6     5   kl^b kl^b.s3      -0.01
问题是每个单词的前10个单词检测器是不同的。我希望每个绘图都有一个图例,其中只包括前10个列表。相反,创建一个图例,其中包含任何绘图中出现的所有单词检测器。我确实需要每个绘图中的特定列名,所以我不能将列名更改为有人知道这样做的方法吗

谢谢

jim

好吧,我放弃了这一点——我认为这是不可能的。相反,当我读取每个文件时,我会创建一个带有项目特定图例的ggplot对象,将其保存到列表中,然后在读取所有文件后创建一个多面板绘图

例如:

plotList[[长度(plotList)+1]]
ggplot(traceOut.m2.all, aes(time,Activation,color=Word, shape=Word) ) + 
  facet_wrap(~ Target) +   
  geom_line(aes(label=Word))
plotList[[length(plotList) + 1]]  <- ggplot(traceOut.m2, aes(time, Activation, color=Word) + geom_line(aes(label=Word))