假设我在剧情中有3组,每组3个点,我需要一个黑色&白色版本,其中3组中的3个点都显示有不同的符号。 我应该如何指定panel.superpose函数?
http://www.r-bloggers.com/working-with-themes-in-lattice-graphics/ http://stat.ethz.ch/R-manual/R-devel/library/lattice/html/panel.superpose.html
答案 0 :(得分:11)
我倾向于使用您链接到的博客文章中列出的相同的一般策略。
从standard.theme()
开始,您可以对设置进行调整,直到您拥有最符合您自己需求的自定义主题。一旦你得到了你喜欢的东西,只要你想使用它,你就可以通过par.settings
参数插入它。
library(lattice)
# Start work on your own black-and-white theme
myTheme <- standard.theme(col = FALSE)
myTheme$superpose.symbol$pch <-1:7
# These are the kinds of commands you can use to explore the list of available
# settings as well as their current settings.
names(myTheme)
myTheme$superpose.symbol
# Compare the results of your own theme to those produce by lattice's
# default settings.
library(gridExtra)
p1 <- xyplot(Sepal.Length ~ Petal.Length, group= Species, data = iris,
main = "lattice's default theme")
p2 <- xyplot(Sepal.Length ~ Petal.Length, group= Species, data = iris,
par.settings = myTheme,
main = "My customized theme")
grid.arrange(p1, p2, ncol=2)
答案 1 :(得分:3)
可能有一种更简单的方法(我对格子并不十分熟悉)但是:
library(lattice)
df <- data.frame(x = rnorm(9), y = rnorm(9), z= letters[1:3])
xyplot(x~y,data=df,groups=z,
par.settings=list(superpose.symbol=list(pch=1:3,
col='black')))
答案 2 :(得分:2)
以下是另一种解决方案,基于panel.superpose
,您在问题中提及:
library(lattice)
xyplot(Sepal.Length ~ Petal.Length, groups = Species, data = iris,
panel = function(x,y,...){
panel.superpose(x,y,..., pch=list("A","O","X"))
})
lattice
使用主要变量(定义主要显示),条件变量(定义在不同面板中并置的子组)和分组变量< / strong>(定义在面板中叠加的子组)。
公式 Sepal.Length~Petal.Length 和分组语句 groups = Species 指定要绘制的数据并将其传递给panel
控件绘图。如果groups!= NULL panel.superpose
将分配给pch
的列表的第i个元素传递给groups
的第i个级别。
将...
用于panel
和panel.superpose
可以避免定义所有函数参数,并仅说明要自定义的参数。
pars.settings
将自定义设置附加到特定对象,而不像全局影响设置的lattice.options
。