在ggpairs中设置alpha并移除密度图的黑色轮廓

20

考虑以下例子:

data(tips, package = "reshape")
library(GGally)
pm <- ggpairs(tips, mapping = aes(color = sex), columns = c("total_bill", "time", "tip"))
pm

enter image description here

如何使密度图更透明并去除黑线?

GGally软件包最近似乎发生了很多变化,我找不到一个有效的解决方法。

更新

我找到了如何使用自定义函数来改变alpha值:

my_dens <- function(data, mapping, ..., low = "#132B43", high = "#56B1F7") {
  ggplot(data = data, mapping=mapping) +
    geom_density(..., alpha=0.7) 
}

pm <- ggpairs(tips, mapping = aes(color = sex), columns = c("total_bill", "time", "tip"),
              diag=list(continuous=my_dens))
pm

但黑线仍然存在。


1
你有查看过这篇说明文档吗?特别是,尝试一下“矩阵部分”/“自定义函数”或“绘图矩阵子集”,并展示你的尝试结果。 - Henrik
5
你已经接近成功了!只需将color设置为NA即可去除线条。my_dens <- function(data, mapping) { ggplot(data = data, mapping = mapping) + geom_density(alpha = 0.5, color = NA) }。在你的情况下,lowhigh参数是多余的,因为你没有使用scale_fill_gradient(就像示例中那样)。请随意将您的“更新”撰写成答案。 - Henrik
@Henrik 很完美,谢谢。 - spore234
@Henrik,那个vignette链接已经失效了,但是可以在archive.org上找到... 还有一个类似的问题在这里 - JimLohse
2个回答

13

感谢 @Henrik 提供的帮助,这是使用自定义函数的解决方案。

my_dens <- function(data, mapping, ...) {
  ggplot(data = data, mapping=mapping) +
    geom_density(..., alpha = 0.7, color = NA) 
}

pm <- ggpairs(tips, mapping = aes(color = sex), columns = c("total_bill", "time", "tip"),
              diag = list(continuous = my_dens))
pm

输入图片描述

可在文档中找到有关如何自定义ggpairs图的示例。请查看“矩阵部分”和“绘图矩阵子集”。


6
我知道答案,但如果超过一年可能已经失效了。当我复制粘贴你的代码时,只得到空白的密度值,似乎不再起作用。 - MLEN
尝试使用fill而不是color。 - SwatchPuppy
1
@MLEN 这个答案对我有用 -- 类似的问题在这里 - JimLohse
但是在我的情况下,密度曲线不再被填充。 - Ben

11

试试这个:

pm <- ggpairs(tips, mapping = aes(color = sex, alpha = 0.7), columns = c("total_bill", "time", "tip"))

1
这是方法。 - HAVB
我似乎发现在aes中设置alpha只是开关的作用。如果你像这个回答中所示使用wrap,你可以将alpha设置为你指定的实际值。 - joelostblom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接