在GGally :: ggpairs中编辑单个ggplot:如何使密度图不填充ggpairs?

9

随着

library(GGally)

data(diamonds, package="ggplot2")
diamonds.samp <- diamonds[sample(1:dim(diamonds)[1],200),]

# Custom Example
ggpairs(
 diamonds.samp[,1:5],
 mapping = ggplot2::aes(color = cut),
 upper = list(continuous = wrap("density", alpha = 0.5), combo = "box"),
 lower = list(continuous = wrap("points", alpha = 0.3), combo = wrap("dot", alpha = 0.4)),
 diag = list(continuous = wrap("densityDiag")),
 title = "Diamonds"
)

我明白了

enter image description here

如何使对角线密度图不填充,只显示线条?

有点奏效...但还不够好。

这段代码非常丑陋,因为它对我来说没有真正的意义。此外,它在这里不起作用,因为它也改变了直方图。

ggpairs(
  diamonds.samp[,1:5],
  mapping = ggplot2::aes(color = cut),
  upper = list(continuous = wrap("density", alpha = 0.5), combo = "box"),
  lower = list(continuous = wrap("points", alpha = 0.3), combo = wrap("dot", alpha = 0.4)),
  diag = list(continuous = wrap("densityDiag"), mapping = ggplot2::aes(fill=carat)),
  title = "Diamonds"
)

enter image description here


请参见 https://github.com/bbolker/stat744/blob/master/lectures/explore_multiway.R#L109 - Ben Bolker
1个回答

13

这个问题的答案可以在https://cran.r-project.org/web/packages/GGally/vignettes/ggpairs.html找到(存档在此处)。

ggally_mysmooth <- function(data, mapping, ...){
  ggplot(data = data, mapping=mapping) +
    geom_density(mapping = aes_string(color="cut"), fill=NA)
}
ggpairs(
  diamonds.samp[,1:5],
  mapping = aes(color = cut),
  upper = list(continuous = wrap("density", alpha = 0.5), combo = "box"),
  lower = list(continuous = wrap("points", alpha = 0.3), combo = wrap("dot", alpha = 0.4)),
  diag = list(continuous = ggally_mysmooth),
  title = "Diamonds"
)

输入图像描述


2
那个链接的页面已经不存在了,幸运的是 Wayback Machine 有它 https://web.archive.org/web/20160320034441/cran.r-project.org/web/packages/GGally/vignettes/ggpairs.html - JimLohse

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