问题描述
sp <- sp + geom_point() + gs + scale_linetype_manual(values =
c('solid','longdash','dashed','twodash','dotdash','dotted'),labels=labls)
供具有不同数据集的用户使用。如果我将对象标签定义为矢量(例如,labls = c(“ cow”,“ horse”,“ chicken”)),这当然可以正常工作。但是,我希望它在对象不存在时引用默认标签(在这种情况下:1、2、3)。
是否有一种快速而优雅的方法来包含此条件?我偶然发现了“ ifelse”功能,但不确定如何在我要“ labels”请求的对象中使用此功能?
谢谢
解决方法
使用labels = waiver()
指定您想要的默认值。
library(ggplot2)
create_plot <- function(df,labels) {
if (missing(labels)) {
labels <- waiver()
}
ggplot(df,aes(Sepal.Length,Sepal.Width,linetype = Species)) +
geom_line() +
scale_linetype_manual(values = c('longdash','dashed','twodash'),labels = labels)
}
指定labels
create_plot(iris,labels = c('A','B','C'))
未指定labels
并获得默认值
create_plot(iris)