如何为GGally :: ggpairs更改调色板?

9

这个问题与在R和ggpairs中定义用户自定义颜色调色板或者有没有一种方法可以使用ggplot改变GGally::ggpairs的颜色调色板?是相同的,只是那里的解决方案不再适用。


我也想改变颜色调色板,但是有没有一种方法可以使用ggplot改变GGally::ggpairs的颜色调色板?不再适用。该怎么办?

MWE:

library(GGally)
library(ggplot2)
data(diamonds, package="ggplot2")
diamonds.samp <- diamonds[sample(1:dim(diamonds)[1],200),]
ggpairs(
  diamonds.samp[,1:2],
  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"
)

在此输入图片描述

我想补充一下

scale_colour_manual(values=c('red','blue','green','red','blue'))

(显然这只是虚拟代码),得到像下面这样的结果(我没有覆盖所有点):

在此输入图片描述


4
请不要懒惰,至少提供一个最小可复现示例(MVE)。 - user3710546
@Pascal:抱歉,我忘了一行代码,请再试一次。 - Make42
你期望的输出是什么?因为我用你的代码得到了彩色图形。 - user3710546
1
@Pascal:如果你运行MWE中的代码,你会得到第一个图。我相信你也能得到那个图,对吧?这里的颜色是红色、一些沙黄色、绿色、蓝色、品红色,对吧?我想改变这些颜色。对于这个例子,我不在乎用哪些颜色。一个例子可能是'red','blue','green','red','blue'。我不确定这个例子哪里不清楚。 - Make42
1
这不是做事的正确方式,但这是一种方式...只需覆盖矩阵中的每个图表... `for(i in 1:2) { for(j in 1:2){ p[i,j] <- p[i,j] + scale_fill_manual(values=c("red", "blue", "green", "yellow", "black")) + scale_color_manual(values=c("red", "blue", "green", "yellow", "black")) } }` - user20650
显示剩余5条评论
2个回答

15

一种解决方案是从ggmatrix中提取每个图,并添加一个新的scale_,然后将其重新分配回矩阵。

示例

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

p <- ggpairs(
  diamonds.samp[,1:2],
  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"
)

循环遍历每个图表并更改相关比例尺

for(i in 1:p$nrow) {
  for(j in 1:p$ncol){
    p[i,j] <- p[i,j] + 
        scale_fill_manual(values=c("red", "blue", "green", "yellow", "black")) +
        scale_color_manual(values=c("red", "blue", "green", "yellow", "black"))  
  }
}

p

为了给予

这里输入图片描述


2

在您的ggpairs代码之后直接添加+ scale_fill_manual+ scale_colour_manual将起作用:

ggpairs(
  diamonds.samp[,1:2],
  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") +    
    scale_fill_manual(values=c('red','blue','green','red','blue')) +
    scale_colour_manual(values=c('red','blue','green','red','blue'))

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