2012-05-31 21 views
3

当我使用barchart(),我得到这样的事(我知道的图像不是条形图,但我auto.key产生相同的图例):lattice auto.key - 如何调整线条和点?

bar-chart

我想补点,并让他们放大或将它们设置为相应颜色的矩形。

当我使用densityplot(),我得到这样的:

density-plot

我想就行“厚”如果可能的话。

回答

3

daroczig的回答是当我面对这种情况我通常做的。但是,一般来说,我更喜欢使用lattice默认颜色,而不是指定自己的颜色。

你可以通过这样做:

lattice.theme <- trellis.par.get() 
col <- lattice.theme$superpose.symbol$col 
pl <- xyplot(X ~ Y, groups=Z, data=dframe, pch=1:nlevels(dframe$Z), 
      type='o', key=list(text=list(levels(dframe$Z)), space='top', 
           points=list(pch=1:nlevels(dframe$Z), col=col), 
           lines=list(col=col), 
           columns=nlevels(dframe$Z))) 
+0

thx,这是非常有益的! – Druss2k

6

参见?xyplot。一些细节:

有关更改颜色的第一个问题,请使用col参数,例如,

barplot(table(mtcars$am, mtcars$gear), col = c("green", "yellow")) 

enter image description here

但是,如果你要处理的散点图,而不是barplot(这里混淆)与修饰符号,那么auto.key是不是选项遗憾的是,但像这样的没有问题的工作:

xyplot(mtcars$hp ~ mtcars$wt, groups = mtcars$gear, 
     key = list(text = list(as.character(unique(mtcars$gear))), 
        points = list(pch = 10:12, col = 12:14)), pch = 10:12, col = 12:14) 

enter image description here

关于第二个问题使用lwd

densityplot(mtcars$hp, lwd = 3) 

enter image description here

+0

thx again!我调整了一些东西,但基本上这是我一直在寻找!亲切的问候 – Druss2k

4

我只是花了很多时间很大一部分在本质上同样的问题。出于某种原因,@ daroczig风格的方法不适用于在密度图中更改线型(包括键)。

在任何情况下,我认为“正确”的方法是使用trellis.par.setauto.key一起,像这样:

# Maybe we'll want this later 
old.pars <- trellis.par.get() 

trellis.par.set(superpose.symbol=list(pch = 10:12, col = 12:14)) 
xyplot(hp ~ wt, data=mtcars, groups = gear, auto.key=TRUE) 

# Optionally put things back how they were 
trellis.par.set(old.pars) 

实际上,有打字少这种方式(特别是如果你不指望我的保存和恢复原始的网格分析)以及更少的冗余(允许DRY编码)。此外,对于我的生活,我无法弄清楚如何使用key轻松制作多列,但是您可以添加columns作为auto.key列表的其中一个元素。

此外,请确保你正在改变正确的元素!例如,如果您更改了plot.symbol(这听起来确实如此),它什么都不会做。一般来说,对于基于xyplot的东西,我相信superpose.*是实际修改符号,行等的正确元素。

+0

是的格是非常强大的,但要了解一切,即设置一切需要(像你说的)相当一段时间! – Druss2k

+2

您也可以在呼叫中包含'par.settings',而不是设置会话默认值。请参阅http://stackoverflow.com/a/9307134/210673 – Aaron

+0

如果您只想更改一个剧情调用的参数,那么这是一个更好的方法! –