大约18个月前,this helpful exchange出现了,它的代码展示了如何生成中位数和四分位数范围的曲线图。代码如下:
ggplot(data = diamonds) +
geom_pointrange(mapping = aes(x = cut, y = depth),
stat = "summary",
fun.ymin = function(z) {quantile(z,0.25)},
fun.ymax = function(z) {quantile(z,0.75)},
fun.y = median)
生成此图:
我想知道的是如何为中位数和IQ范围添加标签,以及如何格式化条形图(颜色、alpha等)。我尝试将绘图作为对象调用,以查看其中是否有可用于调用格式函数的对象,但在r Studio IDE中查看它时并不明显。
这是可行的吗?我知道我可以做一个盒子图,但那必须包括最小/最大。我想制作只有均值/中位数和智商的箱形图。
发布于 2018-08-15 08:08:26
您可以像更改任何ggplot图层一样更改格式,请参阅docs for Vertical intervals: lines,crossbars & errorbars在这种情况下。下面是一个这样的例子:
library(ggplot2)
ggplot(data = diamonds) +
geom_pointrange(mapping = aes(x = cut, y = depth),
stat = "summary",
fun.ymin = function(z) {quantile(z,0.25)},
fun.ymax = function(z) {quantile(z,0.75)},
fun.y = median,
size = 4, # <- adjusts size
colour = "red", # <- adjusts colour
alpha = .3) # <- adjusts transparency
如果你想单独控制点和线的格式,你需要按照@camille的建议进行操作,并在geom_pointrange()
绘制单个图形对象时对数据进行预处理,这样点和线就是同一个。
我建议这样做:
library(dplyr)
library(ggplot2)
diamonds %>%
group_by(cut) %>%
summarise(median = median(depth),
lq = quantile(depth, 0.25),
uq = quantile(depth, 0.75)) %>%
ggplot(aes(cut, median)) +
geom_linerange(aes(ymin=lq, ymax=uq), size = 4, colour = "blue", alpha = .4) +
geom_point(size = 10, colour = "red", alpha = .8)
https://stackoverflow.com/questions/51850522
复制相似问题