gpt4 book ai didi

r - 叠加直方图和 xyplot

转载 作者:行者123 更新时间:2023-12-01 10:03:34 26 4
gpt4 key购买 nike

我想使用 r 的 lattice 包叠加直方图和表示累积分布函数的 xyplot。

我曾尝试使用自定义面板功能来完成此操作,但似乎无法正确处理——我被一个单变量的图和一个双变量的图挂断了。

这是我想要垂直堆叠的两个图的示例:

set.seed(1)
x <- rnorm(100, 0, 1)

discrete.cdf <- function(x, decreasing=FALSE){
x <- x[order(x,decreasing=FALSE)]
result <- data.frame(rank=1:length(x),x=x)
result$cdf <- result$rank/nrow(result)
return(result)
}

my.df <- discrete.cdf(x)

chart.hist <- histogram(~x, data=my.df, xlab="")
chart.cdf <- xyplot(100*cdf~x, data=my.df, type="s",
ylab="Cumulative Percent of Total")

graphics.off()
trellis.device(width = 6, height = 8)
print(chart.hist, split = c(1,1,1,2), more = TRUE)
print(chart.cdf, split = c(1,2,1,2))

stacked plots

我希望这些叠加在同一帧中,而不是堆叠。

以下代码不起作用,我尝试过的任何简单变体也不起作用:

xyplot(cdf~x,data=cdf,
panel=function(...){
panel.xyplot(...)
panel.histogram(~x)
})

最佳答案

您的自定义面板功能走在了正确的轨道上。诀窍是将正确的参数传递给 panel.- 函数。对于 panel.histogram,这意味着传递公式并为 breaks 参数提供适当的值:

编辑 y 轴上的正确百分比值和类型

xyplot(100*cdf~x,data=my.df,
panel=function(...){
panel.histogram(..., breaks = do.breaks(range(x), nint = 8),
type = "percent")
panel.xyplot(..., type = "s")
})

enter image description here

关于r - 叠加直方图和 xyplot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13369216/

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