我的数据集看起来像这样:
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
中绘制具有相同UTMx
和UTMy
的值的范围,有点像在箱线图中。因此,例如,如果我们有一个boxplot,第1行到第4行具有相同的UTMx和UTMy,因此第1行将使用这四行中的obs
值。然后是第2行到第8行用于框2,行9和第10行用于框3.我确实有偶尔的数据,如第5行,UTMx和UTMy没有重复,所以一个点对于一个盒子是不够的,这是为什么我不一定建议一个盒子图。
最后,我还需要在同一个地块中绘制Mod
。当我将观察结果与模型输出进行比较时,Mod[1:4]
中的单个值应位于box1之上。
答案 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)