【问题标题】:Dynamically Assign character output of a variable to color将变量的字符输出动态分配给颜色
【发布时间】:2021-03-07 20:40:33
【问题描述】:

对以下为什么不起作用感到非常困惑。

我有一个可变状态。这会根据下拉列表的输出动态变化。

例如,State="Alabama"

我正在为图例分配以下颜色:

 cols= c(State = "black", "All States" = "red") 

最终传递给 scale_fill_manual

以上为阿拉巴马州生成了正确的图例标签,但图例中没有显示条形/颜色。

如果我改为执行以下操作:

cols= c("Alabama" = "black", "All States" = "red") 

传说是正确的。

我试过了

paste0(State) = "black", as.character(State) = "black" 

无济于事。

我哪里错了?

【问题讨论】:

  • 请用代码展示一个可重现的小例子

标签: r ggplot2 tidyr


【解决方案1】:

我们可以使用setNames 来创建一个命名向量

State <- "Alabama"
cols = setNames(c("black", "red"), c(State, "All States")) 

【讨论】:

  • 它不是动态的,当 State 变量发生变化时会发生什么?
  • @Bjc51192 它是动态的。您可以将值分配给对象,即“状态”并传递它。更新了代码
  • 这行得通,你能解释一下上面的逻辑吗?
  • @Bjc51192 lhs 上的赋值从字面上评估它而不是该对象中的值,这就是你得到c(State = 1) 的原因将它命名为“State”而不是“Alabma”。使用setNames,我们正在为向量分配名称。在这里,评估“状态”对象以返回该向量 c(State, 'All States') 中的值
猜你喜欢
  • 1970-01-01
  • 2019-11-12
  • 1970-01-01
  • 2016-04-08
  • 2012-12-12
  • 1970-01-01
  • 2021-09-13
  • 1970-01-01
相关资源
最近更新 更多