繁体   English   中英

R和ggpairs中用户定义的调色板

[英]User defined colour palette in R and ggpairs

我正在尝试使用来自ggpairsGGally库的GGally的散点图的另一个调色板。请参阅此处的类似问题

library(ggplot2)
library(GGally)

作品

ggplot(iris, aes(x=Sepal.Width, colour=Species)) + stat_ecdf() + scale_color_brewer(palette="Spectral")

ggplot2_1

也有效

ggplot <- function(...) ggplot2::ggplot(...) + scale_color_brewer(palette="Spectral")
ggplot(iris, aes(x=Sepal.Width, colour=Species)) + stat_ecdf()

ggplot2_2

不行

ggplot <- function(...) ggplot2::ggplot(...) + scale_color_brewer(palette="Spectral")

ggpairs(iris, 
    columns=, c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width"),
    colour='Species',
    lower=list(continuous='points'), 
    axisLabels='none',  
    upper=list(continuous='blank')
)

ggpairs1 但补充一点

putPlot(p, ggplot(iris, aes(x=Sepal.Length, colour=Species)) + stat_ecdf(), 1,1)

添加正确颜色的图表。

ggpairs2

解决方法

之后我可以使用getPlot更改绘图,但这并不漂亮..

subplot <- getPlot(a, 2, 1) # retrieve the top left chart
subplotNew <- subplot + scale_color_brewer(palette="Spectral")
a <- putPlot(a, subplotNew, 2, 1)

如何更改ggpairs中散点图的颜色方案? 更具体地说,我想手动定义颜色

scale_colour_manual(values=c("#FF0000","#000000", "#0000FF","#00FF00"))

谢谢!

这是一个有效的黑客:

ggplot <- function(...) ggplot2::ggplot(...) + scale_color_brewer(palette="Spectral")
unlockBinding("ggplot",parent.env(asNamespace("GGally")))
assign("ggplot",ggplot,parent.env(asNamespace("GGally")))

ggplot函数分配新值时,它位于全局环境中。 现在, GGally在加载时导入包括ggplot在内的所有内容(不一定是这样)。 此时,更改全局环境中的ggplot函数无效,因为从GGally具有优先权。 相反,您需要更新ggplot上的GGally:imports函数GGally:imports 只有一个问题:一旦加载了包,它的绑定就会被锁定。 但我们可以解锁它们(我猜这是不赞成的,因此将解决方案标记为黑客)。

请参阅Josh O'Brien 在R中替换内置函数定义下的答案 了解更多信息。

正如stacksia所说(但也添加了scale_fill_brewer)

ggplot <- function(...) ggplot2::ggplot(...) + scale_color_brewer(palette="Spectral") + scale_fill_brewer(palette="Spectral")
unlockBinding("ggplot",parent.env(asNamespace("GGally")))
assign("ggplot",ggplot,parent.env(asNamespace("GGally")))

请参阅Josh O'Brien 在R中替换内置函数定义下的答案 了解更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM