2017-12-18 246 views
-1

希望你們能幫助我,我拼命地創建一個類似於此附掛的圖。行爲圖可能在R/ggplot2?

proposed graph

完整的垂直線表示在所有領域(以及可能引發各區域的事件)共享經驗。我對情節中缺乏顏色表示歉意。就我目前的目的而言,每個標籤都沒有關係,只是稍後我才能添加它們。

下面是一些示例數據。我目前標註所有的垂直條爲「移動的一個」和所有的小酒吧,「運動二」的讓一切明確的,因爲我可以:

move_one <- 
    data.frame(
    start = c(10 , 1000, 3000) 
    , end = c(250, 1500, 4500) 
    , label = "Movement One" 
) 

move_two <- 
    data.frame(
    ind = rep(1:3, each = 3) 
    , start = c(275, 1600, 3800 
       , 20, 1010, 3010 
       , 240, 1400, 4400) 
    , end = c(295, 1750, 4400 
       , 30, 1700, 3600 
       , 290, 1800, 4500) 
    , label = "Movement Two" 
) 

start end  label 
1 10 250 Movement One 
2 1000 1500 Movement One 
3 3000 4500 Movement One 

ind start end  label 
1 1 275 295 Movement Two 
2 1 1600 1750 Movement Two 
3 1 3800 4400 Movement Two 
4 2 20 30 Movement Two 
5 2 1010 1700 Movement Two 
6 2 3010 3600 Movement Two 
7 3 240 290 Movement Two 
8 3 1400 1800 Movement Two 
9 3 4400 4500 Movement Two 

分別(這些做匹配這裏的手工繪製圖表)。

+1

你至少可以使用與運動1和2,運動兩種不同的顏色,也是很難明白什麼是垂直的「帶」對應。並請刪除問題中的笑話。 – dmi3kno

+0

道歉不是很清楚,我是隻用一支筆一列火車不幸所以試着做對角線和水平陰影顯示忒差 - 誠然,這是不明確。垂直條指兩個運動之一的實例(運動1 =對角陰影,運動2 =水平陰影)。水平條是當場景中的某個區域被查看時的實例,基本上我想覆蓋這兩個數據集。至於笑話,我不確定你指的是什麼。 – James

+0

我會刺探編輯問題,但不應編輯以更改基本問題(從基本圖形移至特定方面)。現在你有了一個基礎,問一個新的問題來跟蹤細節(以及兩者之間的聯繫)。 –

回答

2

「這是R.沒有如果,只有怎麼樣。」 -Simon布貝格

基本上,我們只需要在通過每個組件分別ggplot。首先,我們使用geom_rect來創建底層垂直條。然後用geom_hline添加每個區域的水平線。最後,在另一個geom_rect的頂部添加小盒子。帶有軸標籤的波蘭語以及您希望從那裏獲得的任何其他主題設置。

ggplot() + 
    geom_rect(
    aes(xmin = start 
     , xmax = end 
     , fill = label 
     , ymin = 0 
     , ymax = 4) 
    , move_one 
) + 
    geom_hline(aes(yintercept = ind) 
      , move_two) + 
    geom_rect(
    aes(xmin = start 
     , xmax = end 
     , fill = label 
     , ymin = ind - 1/3 
     , ymax = ind + 1/3) 
    , move_two 
) + 
    xlab("Time (milliseconds)") + 
    ylab("Area") 

給人

enter image description here

+0

感謝馬克,它給我的激勵和鼓舞,我需要嘗試這個項目的最後一次。我一直在玩你的例子,但我只是想澄清一些代碼的一部分。在ind = rep(1:3,每個= 3),我會改變1:3來增加區域的數量嗎?我有〜37。另外,每個= 3達到什麼?在每一個地區,目前有3個綠色區塊,是否與此有關?在我的實際數據中,每條線上會有不同數量的綠色塊。目前我試圖在y軸上使用文本標籤,而不是使用0,1,2..loving ggplot2! – James

+0

我假設你已經有數據在手中了。如果您正在將其數字化(即從紙質記錄中轉錄),我會**不會**在R中輸入數據 - 我會將數據保存爲csv(例如,在LibreOffice,Google表格或Excel中)。要查看每段代碼確實,分開運行('each'告訴'rep'多少次連續把它重複向量的每個分量;使用'times'而不是重複全矢量,很多時候)。輸入像這樣的真實數據會很快變得混亂(並且容易出錯)。 –

+0

對於數據標籤,您*可以*使用一個因子作爲y軸。但是,它會使控制它後面的豎條更難。相反,我會使用因子索引(與因子水平相關的數字)進行繪圖,然後修改比例以顯示標籤。例如'scale_x_continuous(符= 1:長度(水平(move_two IND $)),標籤=水平(move_two $ IND))' –