我正在尝试使用来自ggpairs
库中GGally
的{{1}}散点图的其他调色板。请参阅similar question here。
library(ggplot2)
library(GGally)
作品
ggplot(iris, aes(x=Sepal.Width, colour=Species)) + stat_ecdf() + scale_color_brewer(palette="Spectral")
也有效
ggplot <- function(...) ggplot2::ggplot(...) + scale_color_brewer(palette="Spectral")
ggplot(iris, aes(x=Sepal.Width, colour=Species)) + stat_ecdf()
不起作用
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')
)
但添加
putPlot(p, ggplot(iris, aes(x=Sepal.Length, colour=Species)) + stat_ecdf(), 1,1)
以正确的颜色添加图表。
解决方法
之后我可以使用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 :(得分: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
的导入具有优先权。相反,您需要更新ggplot
上的GGally:imports
功能。只有一个问题:一旦加载了包,它的绑定就会被锁定。但我们可以解锁它们(我猜这是不赞成的,因此将解决方案标记为黑客)。
有关更多信息,请参阅Replace definition of built-in function in R?下的Josh O'Brien的回答。
答案 1 :(得分: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?下的Josh O'Brien的回答。