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

标签 r ggplot2 label

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

sp <- sp + geom_point() + gs + scale_linetype_manual(values =
            c('solid',  'longdash','dashed', 'twodash', 'dotdash', 'dotted'), labels=labls)

这供具有不同数据集的用户使用。如果我将对象 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)
}

指定标签

create_plot(iris, labels = c('A', 'B', 'C'))

Non-default

不指定标签并获取默认值

create_plot(iris)

Default

关于r - ggplot2:如果对象存在则使用标签,否则选择默认/NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64552510/

相关文章:

r - 避免在 dplyr 非标准评估中重复取消引用

r - 获取通过重采样计算的多重回归系数值

r - 如果 ggplot2 箱线图中存在多个异常值,则出现抖动

iOS:如何根据屏幕变化更改标签对齐方式

css - 如何仅使用 CSS 复选框和标签样式

r - 如何增加 facet_grid 中 ggplot 箱线图的内边距?

r - xgboost多项式分类错误: "label and prediction size not match"

r - 帮助 R 和 grouping/aggregate/*apply/data.table

R,ggplot2 : creating a single legend in a bubble chart with positive and negative values

r - 您可以在现有轴下添加标签吗?