我正在尝试使用 lattice 库的densityplot
函数来显示一些数据。我的数据集非常杂乱,所以我想减少底部绘制的符号的alpha值(这样可以在过度绘图的情况下获得更清晰的视图)。但是,我似乎无法改变那些符号的alpha值而不会使实际密度曲线同样不透明。我正在使用图表的par.settings
选项并为superpose.line
和superpose.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)
答案 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)
})