gpt4 book ai didi

r - 使用 ggplot 和 plotly 绘制累积密度图

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

当我们从 ggplot2 文档中获取以下示例时

df <- data.frame(x = c(rnorm(100, 0, 3), rnorm(100, 0, 10)),
g = gl(2, 100))

library(ggplot2)
p <- ggplot(df, aes(x, colour = g)) +
stat_ecdf(geom = "step", na.rm = T) + # interchange point and step
theme_bw()
p

我们可以创建一个标准的 cdf 图。现在,如果我们想玩 plotly 中的 plotly ,当我使用 step 时,我得到了一个非常困惑的图像。命令。见下文。但是,当我使用 point 时命令 plotly表现得像它应该的那样。 step 发生了什么命令?为什么我不能仅使用 ggplot 重新创建图像?
library(plotly)
ggplotly(p)

enter image description here

最佳答案

这可以使用 ecdf() 解决功能。

##  ecdf function to get y and 1-y
rcdf <- function (x) {
cdf <- ecdf(x)
y1 <- cdf(x)
y <- unique(y1)
# xrcdf <- 1-y ## to get reverse cdf
xrcdf <- y ## to get cdf
}

ug <- unique(df$g)
ng <- length(ug)
xll <- min(df$x)
xul <- max(df$x)
adr <- data.frame(myxx=c(), myyy=c(), mygg=c())

lapply(1:ng, function(i){
ad2r <- subset(df, g==ug[i])
myx1 <- unique(ad2r$x)
myxx <- c(xll,myx1,xul) ## add lowest value - dummy to assign 100%
myy1 <- rcdf(ad2r$x)
# myyy <- c(1.0,myy1,0.0) ## add 100% to get reverse cdf
myyy <- c(0.0,myy1,1.0) ## add 0% to get cdf
mygg <- ug[i]
ad2rf <- data.frame(myxx,myyy,mygg)
adr <<- rbind(adr,ad2rf)
})

adf <- adr[order(adr$myxx),]

pp <- ggplot(data=adf,
aes_(x=adf$myxx, y=100*adf$myyy, col=adf$mygg, group=adf$mygg)) +
geom_step() +
labs(title="CDF", y = "Y", x = "X", col=NULL)

ppp <- ggplotly(pp, tooltip=c("x","y"))
ppp

这给出了以下输出:

CDF

关于r - 使用 ggplot 和 plotly 绘制累积密度图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42300001/

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