如何在ggpairs(R)中用scale_colour_manual显示彩色组相关性?

问题描述 投票:1回答:1

我正在使用ggpairs来获取3组数据。问题是并非所有变量都具有所有组,因此,某些相关性仅需要显示2个组。由于ggpairs对组进行自动字母排序,因此着色不一致。第一种颜色始终分配给第一个因子级别。 (例如:组1 =红色,组2 =蓝色,组3 =绿色。但变量只有第二组和最后一组:组2 =红色,组3 =蓝色。)

我尝试通过以下方式添加scale_colour_manual来解决此问题:

scale_colour_manual(values = c("group1"="#F8766D", "group2"="#00BA38", "group3"="#619CFF"))

这似乎适用于对角线上的密度图(ggally_densityDiag)和下部的散点图(ggally_points),但对于相关性(ggally_cor),我只获得了总体(黑色)相关性而没有任何有色组相关性了。虽然它们之前显示过,但颜色和组的匹配错误。为什么他们不再显示?

以下代码生成此代码,颜色和组不匹配。

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"))}))

生成的改编代码,不再显示彩色组相关性。

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("group1"="#F8766D", "group2"="#00BA38", "group3"="#619CFF"))}),
lower = list(continuous = function(data, mapping, ...) {
  ggally_points(data = output.b, mapping = mapping) + scale_colour_manual(values = c("group1"="#F8766D", "group2"="#00BA38", "group3"="#619CFF"))}),
diag = list(continuous = function(data, mapping, ...) {
  ggally_densityDiag(data = output.b, mapping = mapping) + scale_fill_manual(values = c("group1"="#F8766D", "group2"="#00BA38", "group3"="#619CFF"))}))
r ggplot2 ggally scale-color-manual ggpairs
1个回答
0
投票

[更新]经过大量的搜索和尝试,我发现了问题,但没有设法解决它。要将上部相关性中“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中自动实现这个?

© www.soinside.com 2019 - 2024. All rights reserved.