微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ggplot2:如果对象存在则使用标签,否则选择默认值/ NULL

如何解决ggplot2:如果对象存在则使用标签,否则选择默认值/ NULL

我有一个ggplot2函数,其中包含以下命令:

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'))

Non-default

未指定labels并获得默认值

create_plot(iris)

Default

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。