2017-05-03 32 views
1

我有一個數據集看起來像這樣:使用兩個載體箱形圖形圖分割成單個組

obs Mod UTMx UTMy 
1 0.48 0.51 560517 7626248 
2 0.39 0.51 560517 7626248 
3 0.48 0.51 560517 7626248 
4 0.54 0.51 560517 7626248 
5 0.46 0.48 560567 7626248 
6 0.48 0.42 560617 7626448 
7 0.48 0.42 560617 7626448 
8 0.53 0.42 560617 7626448 
9 0.54 0.52 560667 7626698 
10 0.40 0.52 560667 7626698 

我想什麼做的是繪製值的範圍在obs具有相同UTMxUTMy,有點像在箱子裏。例如,如果我們有一個箱形圖,第1到第4行具有相同的UTMx和UTMy,因此箱1將使用這四行中的obs值。然後是第2行的第6行到第8行,第3行的第9行和第10行。我確實有第5行那樣的偶然數據,那裏沒有UTMx和UTMy的重複,所以一個點對於一個盒子是不夠的爲什麼我不一定建議boxplot。

最後,我還需要繪製Mod在同一圖中,例如, Mod[1:4]中的單個值應該位於box1的頂部,因爲我將觀察結果與模型輸出進行比較。

回答

1

是這樣的嗎?

library(dplyr) 
library(ggplot2) 

df_labels <- df %>% 
    group_by(UTMx, UTMy) %>% 
    summarize_all(max) 


ggplot(df, aes(x = interaction(UTMx, UTMy), y = obs)) + 
    geom_boxplot() + 
    geom_text(data = df_labels, aes(label = Mod), nudge_y = .01) 

數據:

df <- read.table(text = 'obs Mod UTMx UTMy 
1 0.48 0.51 560517 7626248 
2 0.39 0.51 560517 7626248 
3 0.48 0.51 560517 7626248 
4 0.54 0.51 560517 7626248 
5 0.46 0.48 560567 7626248 
6 0.48 0.42 560617 7626448 
7 0.48 0.42 560617 7626448 
8 0.53 0.42 560617 7626448 
9 0.54 0.52 560667 7626698 
10 0.40 0.52 560667 7626698', header = T) 
+0

這正是我需要的! – SnowFrog