R 控制lattice densityplot中打印符号的alpha值
我试图使用lattice库的R 控制lattice densityplot中打印符号的alpha值,r,lattice,R,Lattice,我试图使用lattice库的densityplot函数来显示一些数据。我的数据集非常混乱,因此我想减少底部绘制的符号的alpha值(以便在过度绘制的情况下可以更清楚地看到)。但是,如果不使实际密度曲线同样不透明,我似乎无法仅更改这些符号的alpha值。我正在使用图形的par.settings选项,并为supplose.line和supplose.symbol设置不同的值(这可用于更改线型和符号,但由于某些原因无法更改alpha值)。我用iris数据集做了一个小例子来说明我的问题/当前方法。如果有
densityplot
函数来显示一些数据。我的数据集非常混乱,因此我想减少底部绘制的符号的alpha值(以便在过度绘制的情况下可以更清楚地看到)。但是,如果不使实际密度曲线同样不透明,我似乎无法仅更改这些符号的alpha值。我正在使用图形的par.settings
选项,并为supplose.line
和supplose.symbol
设置不同的值(这可用于更改线型和符号,但由于某些原因无法更改alpha值)。我用iris数据集做了一个小例子来说明我的问题/当前方法。如果有人有什么建议,我会非常感激的
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)
库(晶格)
数据(iris)
graph.settings这里有一个快速解决方案。它通过提供一个“自定义”面板函数来工作,该函数调用panel.densityplot()
两次:第一次调用使用alpha=0.3
获得地毯点;第二个过批次密度曲线的α=1alpha
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)
})
库(晶格)
数据(iris)
graph.settings我不知道这是否会对您的情况产生影响,但在面板.supplose
下,alpha值应该取自supplose.line
alpha设置。但是,检查函数面板.supplose
,alpha参数为supplose.symbol$alpha
。也许软件包作者可以澄清一下。我知道这在短期内没有帮助,但在某些情况下,切换到ggplot
可能是一个更好的方法。@CarlWitthoft我确实使用了ggplot2
,用于我的大多数其他数字;在这种情况下,我更喜欢lattice
版本的外观。做得很好。如果过度抽签使您感到不适,您也可以在第一个面板中添加lty=0
。densityplot
调用。@Aaron--它至少让我感到不适,所以感谢您的聪明提示。@JoshO'Brien非常好,谢谢,这正是我想要的。