【问题标题】:Make the main label variable and base it on my conditioning variable制作主标签变量并将其基于我的条件变量
【发布时间】:2013-12-28 00:54:09
【问题描述】:

我正在生成一个以某个变量为条件的 xyplot。我不希望条件变量在面板标签中可见,但我希望它作为主标签的一部分可见。我想将一个变量添加到主页面,以便每个页面上的主页面(我的布局是 c(1,1))根据我的条件变量具有不同的文本。这是我的代码示例。

xyplot(counts ~ time|conditioningvariable,
data = test.df,
pch=".",cex=1.5,
ylab="Counts (n)",
xlab="Time (sec)",
main=paste("Count By Time for ",conditioningvariable,sep=" "),
layout=c(1,1),scales=list(relation="free"),
strip=FALSE)

我知道如果我想在每个面板上更改此文本,我必须使用面板功能,但我不确定我将如何去做。我知道这可能非常简单。非常感谢您的解决方案。

【问题讨论】:

  • 如果没有一些样本数据就无法测试,但请尝试将 conditioningvariable 包装在 deparse(substitute()) 中。另外,我只是假设知道你得到了什么和你想要什么。
  • @rawr 我实际上得到了一个错误object 'conditioningvariable' not found,而不是有不同的面板和不同的主标题。这有帮助吗?
  • 您应该查看您提出的所有问题。勾选正确答案。

标签: r lattice


【解决方案1】:

也许:

... , 
main = substitute(expression(Count~By~Time~'for'~X), list(X=conditioningvariable) ),
... ,
strip = strip.custom(strip.levels=c(FALSE,FALSE), strip.names=c(FALSE,FALSE)), 
... ,

在提供可重现数据时提供经过测试的解决方案,而不是猜测。

除非在全局环境中还有一个名为 conditioningvariable 的对象,否则这将不起作用。它不会从 xyplot 调用中恢复值。我玩弄了 iris 数据集和帮助页面中的示例,发现上面的猜测不会成功。条件级别以$condlevel as documented here 的形式存储在xyplot 的结果中。 (事实证明,因为我参与了那次交流,所以我的记忆力很差。)所以一个两步的过程成功了:

X <- xyplot(Petal.Length ~ Petal.Width | Species, iris,
           main = substitute(expression(Count~By~Time~'for'~X), list(X='Species') ) )

xyplot(Petal.Length ~ Petal.Width | Species, iris, 
       main = substitute(expression(Count~By~Time~'for'~X), list(X=names(X$condlevel)) )
       )

事实证明,您可以使用单个 FALSE 值抑制级别或条件名称。

这将打印一个看起来不像条带的“标题”,每页具有不同的条件级别:

X <- xyplot(Petal.Length ~ Petal.Width | Species, iris,
pch=".",cex=1.5,
ylab="Counts (n)",
xlab="Time (sec)", layout=c(1,1,3) ,
scales=list(relation="free"),
strip=function(...){ ltext(.5,.5,paste("Count By Time for ", levels(iris$Species)[panel.number() ]))})
print(X)

要获得更多顶部空间,请使用 main="\n"ltext(.5, 1, ...)`。

【讨论】:

  • 我用虹膜数据尝试了上面的代码。但是主标题只有 Count By Time for Species 而实际上并没有说 Count By Time for setosaCount By Time for versicolor 。有什么事吗?
  • 你实际上并没有说出你想要什么。让主标题说 setosa 或 versicolor 真的不合适吗?您是否将“主要”标题与每个面板上方的条形文本混淆了?你也可以考虑看看你没有接受的问题是否有有效的答案。
  • 抱歉,如果您不能早点收集到它。我正在做的是每页制作一个面板,并且每个面板都没有条形标签。但是让每个条形标签中应该包含的文本成为主标题的一部分。再次道歉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
相关资源
最近更新 更多