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

Ala*_*air 3 r lattice

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

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)
Run Code Online (Sandbox Code Playgroud)

Jos*_*ien 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)
            })
Run Code Online (Sandbox Code Playgroud)

  • 做得很好.如果过度绘图让你烦恼,你也可以在第一个`panel.densityplot`调用中添加`lty = 0`. (2认同)