我试图通过本质上是关键值来绘制一些部分连续数据。下面是一个示例data.frame来说明问题。用ggplot在R中绘制不等长的离散群体
testDf <- data.frame("x1" = c(26.7, 33.0, 23.6, 18.4, 26.7, 75.0, 52.5, 51.5, 56.1, 60.1, 57.7, 37.6, 32.1, 47.7, 65.7, 55.9, 29.6, 32.1, 26.6, 19.3),
"y1" = c(8.1, 3.5, 4.9, 24.6, 23.6, 2.8, 95.7, 93.9, 84.5, 83.0, 94.7, 74.4, 32.5, 6.7, 5.6, 40.7, 25.6, 16.5, 13.2, 22.6),
"x2" = c(33.0, 23.6, 18.4, 26.7, 75.0, 77.2, 51.5, 56.1, 60.1, 57.7, 37.6, 32.1, 47.7, 65.7, 77.9, 58.0, 32.1, 26.6, 19.3, 22.2),
"y2" = c(3.5, 4.9, 24.6, 23.6, 3.3, 3.1, 93.9, 84.5, 83.0, 94.7, 74.4, 32.5, 6.7, 5.6, 3.7, 43.3, 16.5, 13.2, 22.6, 24.3),
"event" = c(8, 1, 1, 1, 1, 44, 8, 1, 1, 11, 12, 1, 1, 1, 36, 8, 8 , 1, 1, 12))
所以8这里是魔术数字。我需要从事件== 8的每一次出现开始。然后将所有的x,y对与段连接,直到下一个事件== 8(其他'事件'数字不重要,8是这些值用于过滤/重置目的)。
简而言之,这里有四个独立的集合。第1到第6行是一组连接的段;第7到15行是另一组段。第16行只是一个段。然后行16到20将是另一组连接段。
Df可能看起来有点混乱,但第n行的(x2,y2)值与第n + 1行的(x1,y1)值相同(8s除外)。只有一个例外,从第5行到第6行有一个小的不连续跃变。
我试图添加一个实际索引的列(在使用verboten'if'循环之前'rle'失败) ,使用重塑按这些索引进行分组,然后使用ggplot制作分段。但无数次尝试后我都无法获得我想要的融化Df。这似乎应该会更容易,但我有点难以理解如何在传递给ggplot之前将它们正确分组。
感谢您的任何帮助。
你能否澄清你在寻求什么帮助(即你期望的结果是什么)?看起来你正在寻找一种方法来创建一个适当的指示变量来传递给ggplot的“group”审美,但是你的最后一段让我有点不确定它是否是你遇到的问题,或者你是否得到了在ggplot结尾的不明原因的行为。 – Empiromancer
所以下面的答案是最直接的,但你的评论也是有帮助的。我试图使用reshape2从宽转换为长。但是没有得到我需要的结果。我完全忘了ggplot中的'group'。 – noLongerRandom