3

当我使用时barchart(),我得到这样的东西(我知道图像不是条形图,但我auto.key产生了相同的图例):

条形图

我想填充这些点并使它们变大或将它们设置为具有相应颜色的矩形。

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

密度图

如果可能的话,我想让线条“更粗”。

4

3 回答 3

6

?xyplot。一些细节:

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

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

在此处输入图像描述

但是,如果您想处理带有修改符号的散点图而不是条形图(在此处混淆),那么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)

在此处输入图像描述

对于您的第二个问题,请使用lwd

densityplot(mtcars$hp, lwd = 3)

在此处输入图像描述

于 2012-05-31T07:16:09.997 回答
4

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

无论如何,我认为“正确”的方法是像这样trellis.par.set使用auto.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)

实际上,这种方式的输入更少(特别是如果你不计算我保存和恢复原始格子 pars 的情况),并且冗余更少(允许 DRY 编码)。此外,对于我的生活,我无法弄清楚如何使用 轻松制作多列key,但您可以将其添加columns为列表的元素之一auto.key

另外,请确保您更改了正确的元素!例如,如果你改变了plot.symbol(这听起来确实是正确的事情),它不会做任何事情。一般来说,对于基于 xyplot 的东西,我相信superpose.*是实际修改符号、线条等的正确元素。

于 2012-06-01T00:37:57.497 回答
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)))
于 2012-05-31T09:29:00.313 回答