控制点阵密度图中的图符号的alpha值

时间:2012-09-13 10:21:06

标签: r lattice

我正在尝试使用 lattice 库的densityplot函数来显示一些数据。我的数据集非常杂乱,所以我想减少底部绘制的符号的alpha值(这样可以在过度绘图的情况下获得更清晰的视图)。但是,我似乎无法改变那些符号的alpha值而不会使实际密度曲线同样不透明。我正在使用图表的par.settings选项并为superpose.linesuperpose.symbol设置不同的值(这可用于更改线型和符号,但出于某种原因不能更改Alpha值)。我用虹膜数据集做了一个小例子来说明我的问题/当前的方法。如果有人有任何建议我会非常感激。

library(lattice) 
data(iris) 

graph.settings <- list(superpose.line = list(lty = 1:3, lwd = 2, alpha = 1),
                       superpose.symbol = list(pch = 1:3, alpha = 0.3)) 
densityplot( ~ Sepal.Length, data = iris, groups = Species, 
            auto.key = list(columns = 3), aspect = 1, 
            main = "Density Plot of Sepal Lengths", xlab = "Length (mm)", 
            par.settings = graph.settings)

1 个答案:

答案 0 :(得分:6)

这是一个快速的解决方案。它的工作原理是提供一个“自定义”面板功能,它会调用panel.densityplot()两次:第一次调用会获得alpha=0.3的地毯点;第二个过度密度曲线与alpha=1

library(lattice) 
data(iris) 

graph.settings <- list(superpose.line = list(lty = 1:3, lwd = 2),
                       superpose.symbol = list(pch = 1:3)) 
densityplot( ~ Sepal.Length, data = iris, groups = Species, 
            auto.key = list(columns = 3), aspect = 1, 
            main = "Density Plot of Sepal Lengths", xlab = "Length (mm)", 
            par.settings = graph.settings,
            panel = function(x, ...) {
                panel.densityplot(x, ..., alpha = 0.3)
                panel.densityplot(x, ..., plot.points=FALSE, alpha = 1)
            })