我試圖通過本質上是關鍵值來繪製一些部分連續數據。下面是一個示例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