Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 控制lattice densityplot中打印符号的alpha值_R_Lattice - Fatal编程技术网

R 控制lattice densityplot中打印符号的alpha值

R 控制lattice densityplot中打印符号的alpha值,r,lattice,R,Lattice,我试图使用lattice库的densityplot函数来显示一些数据。我的数据集非常混乱,因此我想减少底部绘制的符号的alpha值(以便在过度绘制的情况下可以更清楚地看到)。但是,如果不使实际密度曲线同样不透明,我似乎无法仅更改这些符号的alpha值。我正在使用图形的par.settings选项,并为supplose.line和supplose.symbol设置不同的值(这可用于更改线型和符号,但由于某些原因无法更改alpha值)。我用iris数据集做了一个小例子来说明我的问题/当前方法。如果有

我试图使用lattice库的
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
获得地毯点;第二个过批次密度曲线的α=1
alpha

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非常好,谢谢,这正是我想要的。