gpt4 book ai didi

r - 如何在ggplot2密度曲线下遮蔽特定区域?

转载 作者:行者123 更新时间:2023-12-02 08:25:20 25 4
gpt4 key购买 nike

Related post here

我的意图是对位于两点之间的密度曲线下方的区域进行阴影处理。在此示例中,我想对值 0.25 和 0.5 之间的区域进行着色。

我已经能够用以下方法绘制我的密度曲线:

    setwd("D:/Workspace")

# -- create dataframe

coursename <- c('Math','Math','Math','Math','Math')
value <- c(.12, .4, .5, .8, .9)
df <- data.frame(coursename, value)

library(ggplot2)

density_plot <- ggplot(aes(x=value, colour=coursename, fill=coursename), data=df) +
geom_density(alpha=.3) +
geom_vline(aes(xintercept=.5), colour="blue", data=df, linetype="dashed", size=1) +
scale_x_continuous(breaks=c(0, .25, .5, .75, 1), labels=c("0", ".25", ".5", ".75", "1")) +
coord_cartesian(xlim = c(0.01, 1.01)) +
theme(axis.title.y=element_blank(), axis.text.y=element_blank()) +
ggtitle("sample data")

density_plot

我尝试使用以下代码对 0.25 和 0.5 之间的区域进行着色:

    x1 <- min(which(df$value >=.25))
x2 <- max(which(df$value <=.5))

with(density_plot, polygon(x=c(x[c(x1,x1:x2,x2)]), y=c(0, y[x1:x2], 0), col="gray"))

但它只会产生以下错误:

Error in xy.coords(x, y) : object 'y' not found

最佳答案

或者对自己使用 ggplot2!

coursename <- c('Math','Math','Math','Math','Math')
value <- c(.12, .4, .5, .8, .9)
df <- data.frame(coursename, value)

library(ggplot2)

ggplot() +
geom_density(data=df,
aes(x=value, colour=coursename, fill=coursename),
alpha=.3) +
geom_vline(data=df,
aes(xintercept=.5),
colour="blue", linetype="dashed", size=1) +
scale_x_continuous(breaks=c(0, .25, .5, .75, 1),
labels=c("0", ".25", ".5", ".75", "1")) +
coord_cartesian(xlim = c(0.01, 1.01)) +
theme(axis.title.y=element_blank(),
axis.text.y=element_blank()) +
ggtitle("sample data") -> density_plot

density_plot

dpb <- ggplot_build(density_plot)

x1 <- min(which(dpb$data[[1]]$x >=.25))
x2 <- max(which(dpb$data[[1]]$x <=.5))

density_plot +
geom_area(data=data.frame(x=dpb$data[[1]]$x[x1:x2],
y=dpb$data[[1]]$y[x1:x2]),
aes(x=x, y=y), fill="grey")

enter image description here

(这与 jlhoward 的答案几乎相同,但从 ggplot 中获取计算值)。

关于r - 如何在ggplot2密度曲线下遮蔽特定区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32722849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com