如何更改格点图(levelplot)的颜色主题?

17

我安装的默认主题将值映射为粉色和青色。如何将其更改为灰度主题?

5个回答

16

您可以使用

library(lattice)
lattice.options(default.theme = standard.theme(color = FALSE))

这会将图像转换为适合打印的黑白模式。我也尝试过其他一些调整,比如

sb <- trellis.par.get("strip.background") 
sb[["col"]][1] <- "lightgray"
trellis.par.set("strip.background", sb) 

只改变页眉背景的方法。

我以为人们只在这里询问 ggplot2 的问题 :) 很高兴看到有些关于 lattice 的提问。


1
确实,只要付出足够的努力,人们可以说服Lattice生成的图表与ggplot2的精美外观相差无几。我不知道是否有适用于ggplot2的类似Lattice的主题。 - baptiste
1
这个方法不起作用,至少在org-mode中不起作用。必须使用trellis.par.set(canonical.theme(color = FALSE)) - Henrik
@Henrik 我也一样 - 感谢您分享您的解决方案! - deca

13

感谢大家的答案!这也帮助我找到了更多关于该主题的信息。我了解到我可以使用以下内容来控制灰度比例:

levelplot(my_var, col.regions = gray(0:100/100))

这个函数可以让我从黑色(0)到白色(1)之间获得100个不同的灰度值。

我正在使用该函数来绘制灰度图像(照片),而这些照片已经被我预处理成双精度矩阵。我不知道这是否是最佳方法,但到目前为止它能够正常工作,并且我相信它比EBImage和rimage库中提供的基本显示选项给我更多的绘图选择。我不知道如何修改调色板以匹配显示彩色图像,但我很高兴到目前为止不必这样做...


如果您的图像有256个灰度级别(8位),那么gray(0:255/255)可能更接近原始图像? - Greg
嘿,一个好的提示!虽然在我的图像中,当值大于50时,我停止看到差异。 - user442446

5

有很多方法可以完成您的请求。最简单的方法是:

trellis.device(color = FALSE)

另一个是:
ltheme <- canonical.theme(color = FALSE) ## in-built B&W theme 
ltheme$strip.background$col <- "transparent" ## change strip bg 
lattice.options(default.theme = ltheme) ## set as default 

请参阅此邮件存档项目:有关指定lattice黑白主题的更多信息


2
我唯一能用的是:
>trellis.par.set(canonical.theme(color = FALSE)) 

2

你可能也希望考虑使用panel.levelplot.raster,因为最近我发现它能大幅度减小图形的大小。结合一般情况下trellis设置的更改,以下是一些示例:

trellis.par.set(regions=list(col=topo.colors(100)))
levelplot(volcano, panel = panel.levelplot.raster)

levelplot(volcano, panel = panel.levelplot.raster,
          par.settings=list(regions=list(col=topo.colors(100))))

第二种方法是具有欺骗性的,因为实际上棚架设置是在全局范围内更改的。我不知道col.regions参数,但它似乎可以在本地更改颜色主题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接