当我使用时barchart()
,我得到这样的东西(我知道图像不是条形图,但我auto.key
产生了相同的图例):
我想填充这些点并使它们变大或将它们设置为具有相应颜色的矩形。
当我使用时densityplot()
,我得到这样的东西:
如果可能的话,我想让线条“更粗”。
当我使用时barchart()
,我得到这样的东西(我知道图像不是条形图,但我auto.key
产生了相同的图例):
我想填充这些点并使它们变大或将它们设置为具有相应颜色的矩形。
当我使用时densityplot()
,我得到这样的东西:
如果可能的话,我想让线条“更粗”。
见?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)
我只是花了很多时间在本质上同样的问题上。出于某种原因,@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.*
是实际修改符号、线条等的正确元素。
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)))