【问题标题】:Make ggplot aes color mapping conditional on logical statement使ggplot aes颜色映射以逻辑语句为条件
【发布时间】:2021-08-24 02:10:53
【问题描述】:

我想根据逻辑测试的结果在 ggplot 中进行颜色映射。例如,我可以给出一个输入,然后将颜色 aes 设置为 a、b 或 c。但是,我似乎无法让它工作,因为我可以设法做到这一点的唯一方法是传递类似“a”的东西,当然它实际上并没有映射到数据中的 a 列。任何帮助将不胜感激!

test.data <- tibble(nums = seq(1:6),
                    a = c("a","a","a", "b", "b", "b"),
                    b = c("a","a", "b", "b", "a","a"),
                    c = c("a", "b", "a", "b", "a", "b"))

ggplot(data = data) +
  geom_point(aes(x = nums, y = nums, color = a))

color.choice <- "a"

ggplot(data = data) +
  geom_point(aes(x = nums, y = nums, color = color.choice))

【问题讨论】:

标签: r ggplot2 tidyverse


【解决方案1】:

这可以通过例如实现。 .data 亲名词,允许您选择作为字符串传递的列:

library(ggplot2)

test.data <- data.frame(nums = seq(1:6),
                    a = c("a","a","a", "b", "b", "b"),
                    b = c("a","a", "b", "b", "a","a"),
                    c = c("a", "b", "a", "b", "a", "b"))

color.choice <- "a"

ggplot(data = test.data) +
  geom_point(aes(x = nums, y = nums, color = .data[[color.choice]]))

【讨论】:

  • 太好了,感谢您这么快回答!!
  • 再次表示感谢 - 我在我正在制作的应用程序中实现了这一点,它运行良好!这意味着我可以删除几个巨大的 if/else if 语句,并简单地包含一个关于将什么词放入情节的条件
  • Hej 杰米。不客气。并感谢您再次表示感谢。总是乐于提供帮助。是的。尤其是在使用闪亮时,最好了解 .data 代名词。最佳 S.
猜你喜欢
  • 1970-01-01
  • 2020-03-22
  • 2018-03-28
  • 2019-01-02
  • 1970-01-01
  • 1970-01-01
  • 2011-11-27
  • 2020-10-21
  • 2021-10-24
相关资源
最近更新 更多