Boxplot-like图使用两个向量分裂成单个组

时间:2017-05-03 15:11:10

标签: r

我的数据集看起来像这样:

   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的值的范围,有点像在箱线图中。因此,例如,如果我们有一个boxplot,第1行到第4行具有相同的UTMx和UTMy,因此第1行将使用这四行中的obs值。然后是第2行到第8行用于框2,行9和第10行用于框3.我确实有偶尔的数据,如第5行,UTMx和UTMy没有重复,所以一个点对于一个盒子是不够的,这是为什么我不一定建议一个盒子图。

最后,我还需要在同一个地块中绘制Mod。当我将观察结果与模型输出进行比较时,Mod[1:4]中的单个值应位于box1之上。

1 个答案:

答案 0 :(得分: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)