我正在开发一个包含使用ggplot2的绘图功能的包 . 我想更改默认比例的颜色,但不影响全局环境 . 我正在为scale_colour_continuous指定一个新函数,使用一组新的默认颜色 .
library(ggplot2)
dat <- data.frame(a = 1:5, b = 1:5)
home.plot <- function(x){
scale_colour_continuous <- function(...) ggplot2::scale_colour_continuous(..., low = "purple", high = "green")
ggplot(dat, aes(x = a, y = b)) + geom_point(aes(colour = a), size = 10)
}
home.plot(dat)
这不起作用,颜色不会从黑色和蓝色变为紫色和绿色 . 我想这是因为ggplot2在home.plot函数的环境之外查找scale_colour_continuous()函数 .
如果我们尝试相同但在全球环境中它可以工作:
scale_colour_continuous <- function(...) ggplot2::scale_colour_continuous(..., low = "purple", high = "green")
ggplot(dat, aes(x = a, y = b)) + geom_point(aes(colour = a), size = 10)
但是这会改变ggplot对所有后续图的行为,而不仅仅是那些由home.plot创建的图 .
我知道我可以在scale_colour_continuous()创建ggplot对象后更改颜色,但home.plot不知道用户是否绘制了离散或连续变量,因此我需要更改比例之前的比例行为 . ggplot对象已创建 .
任何帮助表示赞赏 .
1 回答
这应该工作 . 对于2种颜色,你可以使用渐变,bur为多个你需要渐变