我从问题开始:有没有办法创建一个函数,比如ggColors
,它包装了包ggplot2
中的其他几个函数?该函数应使用运算符ggplot
(而不是+
运算符)与%>%
对象相加,如下例所示:
p <- ggplot(mtcars, aes(hp,disp, color = as.factor(cyl))) + geom_point()
p + ggColors()
ggColors
应该是这样的:
ggColors <- function(values = NULL, name = NULL, cold.colors = TRUE) {
# Some conditions:
if (is.null(values)){
if (cold.colors) {
values <- c("darkblue","blue", "green")
} else {
values <- c("red","orange", "yellow")
}
}
# Modified default values of `ggplot2` functions:
scale_color_manual(name = name, values = values) +
scale_fill_manual (name = name, values = values)
}
问题是scale_color_manual
和scale_fill_manual
没有加起来,因为它们不会在函数ggplot
中产生ggColors
个对象。
答案 0 :(得分:3)
display:block
应该返回一个情节元素列表。然后,可以使用ggColors
:
+
然后,
ggColors <- function(values = NULL, name = NULL, cold.colors = TRUE) {
# Some conditions:
if (is.null(values)){
if (cold.colors) {
values <- c("darkblue","blue", "green")
} else {
values <- c("red","orange", "yellow")
}
}
# Modified default values of `ggplot2` functions:
return(list(scale_color_manual(name = name, values = values),
scale_fill_manual (name = name, values = values)))
}