gpt4 book ai didi

r - 为格子中的每个面板添加不同的唯一标签

转载 作者:行者123 更新时间:2023-12-01 23:24:08 24 4
gpt4 key购买 nike

很清楚How to label panels in lattice使用 panel.textltext 参数。但是,如果我想为网格中的每个面板使用不同的、唯一的标签怎么办?让我用这个简化的 Dotplot 来说明我的观点:

library(Hmisc)
#example data
data <- data.frame(transport=rep(c("bicycle","bus"),each=2),
att=rep(c("behaviour control","intention"),2),
value=c(4.134,4.5,3.77,2.4), Lo=c(3.92,4.37,3.51,2.2),
Hi=c(4.34,4.62,4.02,2.61))
#labels I want to use
labels.hi=c("likely","easy")
labels.lo=c("unlikely","difficult")
#example dotplot
png("test.png",width=300, height=400)
Dotplot(transport ~ Cbind(value, Lo, Hi) | att, data, col=1,
panel = function(x, y,...) {
panel.Dotplot(x, y,...)
ltext(2.5,1.5, labels=labels.lo)
ltext(4.5,1.5, labels=labels.hi)
})
dev.off()

这段代码给出了下面的情节:

enter image description here

上面板获得了正确的标签(“不太可能”和“可能”),但下面板只是获得了上面板标签的副本。相反,我想在下面板中绘制剩余的标签(“简单”、“困难”),但与上面板位于相同的位置。

我知道我可以为每个标签使用 ltext 参数单独定义每个标签,但考虑到我的“现实生活”图(呵呵)有更多面板,而且差异更大,这是非常不切实际的解决方案独特的标签。有什么建议么?请只点格。

最佳答案

(很高兴看到一个好的格子问题。)我不同意 agstudy 的观点,即下标将是一个很好的索引策略。在这种情况下,它们是偶然工作的,因为您的点数与标签相同,并且顺序相同。下标是为面板选择单个数据点的机制,而不是索引面板的机制。考虑使用 packet.number()panel.number() 函数。在这种情况下,我相信他们会返回相同的值,但如果您考虑到更复杂的条件因素,请查阅他们共享的帮助页面:

Dotplot(transport ~ Cbind(value, Lo, Hi) | att, data, col=1,
panel = function(x, y,...) {
panel.Dotplot(x, y,...)
if(packet.number()==1){ ltext(c(2.5,4.5) ,1.5, labels= labels.lo)}
if(packet.number()==2){ ltext(c(2.5,4.5) ,1.5, labels=labels.hi)}
})

如果您的标签在矩阵中,那么使用“[”索引会很容易。

lab.mat=matrix(c( labels.hi,labels.lo), 2)
lab.mat
# [,1] [,2]
#[1,] "likely" "unlikely"
#[2,] "easy" "difficult"

png("test.png",width=300, height=400)
Dotplot(transport ~ Cbind(value, Lo, Hi) | att, data, col=1,
panel = function(x, y,...) {
panel.Dotplot(x, y,...)
{ ltext(c(2.5,4.5) ,1.5, labels= lab.mat[packet.number(),])}
})
dev.off()

enter image description here

关于r - 为格子中的每个面板添加不同的唯一标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20126137/

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