我有代码来创建一个散点图矩阵,其中包含我希望基于数据集中的分类变量着色的密度曲线。我需要它来匹配特定的颜色,但似乎无法从默认值更新颜色。
下面是一个例子,我试图用一个众所周知的数据集来实现这个概念(因为我的数据包含敏感信息,不能发布)。
例如,如果我想用R中的crabs
数据集创建这个,我会给分类变量分配一个颜色和符号,如:
species <- ifelse(crabs$sp == "B", "blue", "orange")
gender <- ifelse(crabs$sex == "M", "O", "+")
然后,我希望在矩阵和密度图中使用完全相同的符号和颜色:
ggpairs(crabs, columns=4:8, aes(color=species, shape=gender),
lower=list(continuous="smooth"), diag=list(continuous="densityDiag"))
但是,这会输出以下内容:
But the coral color should be blue, and the teal color should be true orange.
2条答案
按热度按时间cnjp1d6j1#
您可能需要使用scale_color_manual()和scale_fill_manual()为每个组指定颜色。此外,颜色值必须与类别数相同,而不是与数据长度相同:
8zzbczxx2#
更改ggpair的默认颜色并不容易,这里的问题特别是右上角的关联文本,这意味着
scale_colour_identity()
不起作用。您可以使用手动缩放来定义颜色:在这里,我建议你把
species
中的值称为更有意义的东西,以便在相关图中得到更好的标签。我还建议你为aes()
中的颜色传入一列数据,而不是一个外部向量。你可以为scale_shape_manual()
中的点做类似的事情。