这可能是一个非常幼稚的问题。我进行了搜索,但找不到重复项,但是如果有人问过这个问题,请告诉我!
我有一些基于布尔参数的函数,可以绘制新图或在现有图的顶部绘制图。这是MWE:
plotThing <- function(boolPoints = FALSE, color = "black") {
x <- sample(c(1:100), size = 10, replace=TRUE)
y <- sample(c(1:100), size = 10, replace=TRUE)
if(boolPoints) {
points(y~x, col = color, pch = 19)
}
else {
plot(y~x, col = color, pch = 19)
}
}
这种功能风格对我很有用,因为我将所有这些功能都导入了降价文档中,然后在一个图上绘制任意数量的点确实很容易。例如,在降价文档中:
```{r MWE}
source("MWE.R")
plotThing();
plotThing(boolPoints = TRUE, color = "red")
legend("topright", title = "Things", c("thing1", "thing2"), pch = c(19,19), col = c("black", "red"))
```
在实际代码中,我认为这种样式可能是一个不错的选择,因为我的绘图函数非常大,并且有很多参数,一遍又一遍地重复是很丑陋的。
是否可以/如何使用ggplot进行等效设置?还是只是建议您更改设计而设计不佳?
答案 0 :(得分:1)
我不确定这是否可以直接回答您的问题,但我认为这可能会有所帮助。
因此,在ggplot2
中,您可以使用漂亮的功能来保存图而无需打印它们:
p <- ggplot(mtcars, aes(x=hp, y=mpg)) + geom_point()
现在,如果您已经收集了更多数据并打印或仅打印基本图,则可以根据条件将更多点添加到同一图上。
if(addPoints){
print(p + geom_point(data = data.frame(hp=500, mpg=50)))
} else {
print(p)
}
但是,如果您向图中添加其他数据,则只需确保美学映射匹配即可。