2014-03-06 78 views
5

我想在R中的GGally庫中使用ggpairs的散點圖的另一個調色板。請參閱similar question hereR和ggpairs中的用戶自定義調色板

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

謝謝!

+0

嗨,你可以將'ggpairs'陰謀存儲在一個對象中,比如'gg'並修改'gg $ plots' –

回答

3

這是一個可行的黑客:

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導入優先。相反,您需要更新GGally:imports上的ggplot功能。只有一個問題:一旦一個包被加載,它的綁定被鎖定。但是我們可以解鎖它們(我猜這是不被接受的,因此將解決方案標記爲黑客)。

查看Josh O'Brien在Replace definition of built-in function in R?下的答案以獲取更多信息。

0

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

見喬什 - 奧布萊恩的回答Replace definition of built-in function in R?下獲取更多信息。