如何使用ggpairs根据ggally_cor中的因子水平进行着色?

时间:2019-04-13 15:48:26

标签: r ggplot2 correlation ggally ggpairs

我将ggpairs用于3组数据。问题在于,并非所有变量都具有所有组,因此,某些相关关系仅需要显示2个组。由于ggpairs对各组的自动字母顺序排序,因此颜色不一致。第一种颜色始终分配给第一个因子水平。 (例如:组1 =红色,组2 =蓝色,组3 =绿色。但是变量只有第二和最后一组:组2 =红色,组3 =蓝色。)请参见figure:颜色与组不匹配。用以下代码生成图:

ggpairs(output.b[,c(13,17,18)], aes(colour = as.factor(output.b$country), alpha = 0.4),
upper = list(continuous = function(data, mapping, ...) {
  ggally_cor(data = output.b, mapping = mapping) + scale_colour_manual(values = c("#F8766D", "#00BA38", "#619CFF"))}),
lower = list(continuous = function(data, mapping, ...) {
  ggally_points(data = output.b, mapping = mapping) + scale_colour_manual(values = c("#F8766D", "#00BA38", "#619CFF"))}),
diag = list(continuous = function(data, mapping, ...) {
  ggally_densityDiag(data = output.b, mapping = mapping) + scale_fill_manual(values = c("#F8766D", "#00BA38", "#619CFF"))}))

要将上层相关性中'group3:'的颜色更改为蓝色,我必须隔离这些图并像下面的代码一样进行scale_colour_manual

p <- ggpairs(...)
p[1,2] <- p[1,2] + scale_colour_manual("group3: 0.113" = "#F8766D")
p[1,3] <- p[1,3] + scale_colour_manual("group3: 0.268" = "#F8766D")

手动完成所有这些操作太麻烦了,因为我必须使用不同的分组来制作多个这样的图,并且我还有更多的变量...有什么方法可以在ggally_cor中自动实现吗?

0 个答案:

没有答案