如何在格子图中为不同的组指定不同的符号?

时间:2012-02-16 23:16:33

标签: r lattice

假设我在剧情中有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

3 个答案:

答案 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)

enter image description here

答案 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"))
})

产生以下输出: panel_superpose_example

lattice使用主要变量(定义主要显示),条件变量(定义在不同面板中并置的子组)和分组变量< / strong>(定义在面板中叠加的子组)。

公式 Sepal.Length~Petal.Length 和分组语句 groups = Species 指定要绘制的数据并将其传递给panel控件绘图。如果groups!= NULL panel.superpose将分配给pch的列表的第i个元素传递给groups的第i个级别。

...用于panelpanel.superpose可以避免定义所有函数参数,并仅说明要自定义的参数。

pars.settings将自定义设置附加到特定对象,而不像全局影响设置的lattice.options