R问题。绘制 2 个因素的不同组合的响应。希望能用“直方图”来显示来自莱迪思封装

发布于 2024-10-17 13:14:36 字数 260 浏览 7 评论 0原文

假设我有一个响应变量(我们称之为“Y”)和 2 个因子(因子 A 的水平为 A1 和 A2,因子 B 的水平为 B1 和 B2),

我可以使用lattice包中的“直方图”函数来绘制(A1 和 B1)的响应与(A2 和 B2)的响应对比?

我知道

直方图(~y|因子A*因子B)

将绘制所有 4 个组合。但如果我只想要那两个怎么办?

只是想感谢这个网站上每个人的帮助!

Suppose I have a response variable (we'll call 'Y') and 2 factors (Factor A with levels A1 and A2, and Factor B with levels B1 and B2)

Can I use the 'histogram' function in the lattice package to plot the response for (A1 and B1) against the response for (A2 and B2)?

I know

histogram(~y|FactorA*FactorB)

will plot all 4 combinations. But what if I only want those two?

Just wanted to thank everyone at this site for all the help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清浅ˋ旧时光 2024-10-24 13:14:36

一种方法是使用四种组合创建一个新变量并使用 subset 命令。

FactorAB <- factor(paste(FactorA, FactorB, sep=""))
histogram(~y|FactorAB, subset=FactorAB %in% c("A1B1", "A2B2"))

One way would be to make a new variable with the four combinations and use the subset command.

FactorAB <- factor(paste(FactorA, FactorB, sep=""))
histogram(~y|FactorAB, subset=FactorAB %in% c("A1B1", "A2B2"))
巷雨优美回忆 2024-10-24 13:14:36

应该有一种更简单的方法来做到这一点,但这里有一个技巧应该可以让你非常接近你想要的。

# sample data
dat <- data.frame(Y=rpois(100,20),A=factor(c(rep("A1",50),rep("A2",50))),B=factor(c(rep("B1",50),rep("B2",50))))
dat$B <- sample(dat$B)

# create blank (colourless) histogram
p <- histogram(~Y|A*B,dat,col=0,border=0)
# subset and print blank panels
p[1,]
# draw data from desired panels onto blank "template"
trellis.focus("panel",1,1)
do.call("panel.histogram",trellis.panelArgs(p,1)[1:5])
trellis.focus("panel",1,2)
do.call("panel.histogram",trellis.panelArgs(p,4)[1:5])
trellis.unfocus()

剩下的就是更改上图的下条带。调用 trellis.focus("strip",1,2) 会将其置于焦点中,并且一些合适的其他调用应该能够更改它,但我找不到那是什么。然而,它可能会过度绘制。

There should be a simpler way of doing this, but here is a hack that should get you pretty near what you want.

# sample data
dat <- data.frame(Y=rpois(100,20),A=factor(c(rep("A1",50),rep("A2",50))),B=factor(c(rep("B1",50),rep("B2",50))))
dat$B <- sample(dat$B)

# create blank (colourless) histogram
p <- histogram(~Y|A*B,dat,col=0,border=0)
# subset and print blank panels
p[1,]
# draw data from desired panels onto blank "template"
trellis.focus("panel",1,1)
do.call("panel.histogram",trellis.panelArgs(p,1)[1:5])
trellis.focus("panel",1,2)
do.call("panel.histogram",trellis.panelArgs(p,4)[1:5])
trellis.unfocus()

All that is left is to change the lower strip on the upper plot. Calling trellis.focus("strip",1,2) will put it in focus, and some suitable other call should be able to change it, but I can't find what that would be. It may overplot however.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文