【发布时间】:2021-10-24 11:12:51
【问题描述】:
我正在用R 中的ggplot() 创建一个密度图,其中我用一条垂直线(geom_vline()) 指定median、5% 和95% 分位数。这是我的情节建设:
probs <- c(0.05, 0.95)
quantiles <- quantile(dt.all2018$Qeff, prob = probs)
q5 <- as.numeric(quantiles[1])
q95 <- as.numeric(quantiles[2])
median <- median(dt.all2018$Qeff)
p <- (ggplot(dt.all2018) +
geom_density(aes(x = Qeff, y = ..scaled..), colour = "#007d3c") +
ggtitle("Qeff 2018") +
geom_vline(aes(xintercept = median, color = "median"), linetype = "dashed") +
geom_vline(aes(xintercept = q5, color = "5%"), linetype = "dashed") +
geom_vline(aes(xintercept = q95, color = "95%"), linetype = "dashed") +
scale_color_manual(name = "statistics", values = c('5%' = "#0000FF", '95%' = "red", median = "#007d3c")) +
theme(panel.background = element_blank(), axis.line = element_line(colour = "black"),
plot.title = element_text(lineheight = .8, hjust = 0.5, face = "bold"),
legend.box.background = element_rect(colour = "black"), legend.box.margin = margin(t = 1, l = 1),
legend.title = element_blank()))%>%
ggplotly()
那么我的剧情是这样的(没有我自己画的部分):
现在我想创建一个新列group,其中包含我的数据的组号,即将它所属的组添加到相应的Qeff。第 1 组是5% 之前的所有内容,第 2 组是5% 和median 之间的所有内容,第3 组是median 和95% 之间的所有内容,第4 组是95% 之后的所有内容。 group 列应该只包含数字 1 到 4。
我该怎么做?
这是我的数据表的简短 sn-p:
structure(list(EK = c(311746.83, 0, 408503.01, 965723.51, 447176.86,
0, 0, 237703401.51, 11650300.16, 761470.17, 15514898.49, 791067269.75,
35591131, 10754272.33, 9496742.11, 512370.9, 1134032.95, 35318984.4,
5630139.9, 1111511.07), EH = c(345245.44, 0, 439620.18, 894773.08,
485161.85, 0, 0, 331524231.52, 19502922.3, 1007182.97, 13714848.49,
470803897.97, 36394200.3, 11485817.1, 9542583.17, 532302.49,
1071746.46, 20666845.08, 5333889.99, 938096.94), Peff = c(104.78,
0, 91.52, 112.18, 113.39, 0, 0, 86.18, 101.04, 104.39, 106.23,
86.4, 96.19, 86.38, 113.5, 115.88, 104.61, 96.31, 95.6, 101.71
), Qeff = c(-0.01, 0, 0, 0, 0, 0, 0, 0, -0.01, -0.01, 0, 0, 0,
0, 0.01, 0, 0, 0, 0, 0)), class = c("data.table", "data.frame"
), row.names = c(NA, -20L), .internal.selfref = <pointer: 0x000002671f801ef0>)
【问题讨论】:
-
你可以通过
dput()添加你的数据(dt.all2018) -
当然 - 我已经编辑了我的问题。
标签: r ggplot2 grouping ggplotly density-plot