【问题标题】:How to color only some specific lines among many using ggplot in r?如何在 r 中使用 ggplot 只为许多特定行着色?
【发布时间】:2018-06-22 13:22:25
【问题描述】:

我有一个巨大的数据集,我需要绘制它以查看数据的轨迹。我使用代码绘制了它的一个子集:

ggplot(Trajectory, aes(x= Passage, y =Freq, group = SNV, color= SNV)) + geom_line()

并生成情节 -

这很接近我的需要。现在,我想更改一些线条的颜色(所有段落中都存在的线条)

所以我尝试使用 ifelse 函数

ggplot(Trajectory, aes(x= Passage, y =Freq, group = SNV, color= ifelse(Trajectory==358, "red", ifelse(Trajectory==1212, "Blue", "white")))) +
  geom_line()

它不起作用并导致此错误消息。

"错误:美学长度必须为1或与数据相同 (1566): x, y, 组, 颜色"

任何帮助将不胜感激。

我用于绘图的数据子集可以在这里下载https://cornell.box.com/s/vfe6144xbugdv805argpw8r5so98a73s

【问题讨论】:

  • 谢谢你们的帮助。我最终对我的数据集进行了子集化,创建了一个新表,其中包含我想要不同颜色的 SNV。然后,我覆盖了这些图。如果它对其他人有帮助,这是代码 - library(ggplot2) ggplot(data=Trajectory) + geom_line(aes(x= Passage, y = Freq, group = SNV), color ="grey57") + geom_line(data= P1toP5 , aes(x= Passage, y = Freq, group = SNV), colour= "red1", linetype=2, size=1) + geom_line(data= P0toP5, aes(x= Passage, y = Freq, group = SNV) ), colour= "blue", size=1) - 非常感谢 ;)

标签: r ggplot2 colors lines


【解决方案1】:

感谢你们的帮助。我最终对我的数据集进行了子集化,创建了一个新表,其中包含我想要不同颜色的 SNV。然后,我覆盖了这些图。

如果对其他人有帮助,这里是代码

library(ggplot2)
ggplot(data=Trajectory) +
  geom_line(aes(x= Passage, y = Freq, group = SNV), colour ="grey57") +
  geom_line(data= P1toP5,
              aes(x= Passage, y = Freq, group = SNV), colour= "red1", linetype=2, size=1) +
  geom_line(data= P0toP5,
            aes(x= Passage, y = Freq, group = SNV), colour= "blue", size=1)

结果图是

enter image description here

-谢谢大家 ;)

【讨论】:

    【解决方案2】:

    你可以试试包gghighlight:https://yutani.rbind.io/post/2017-10-06-gghighlight/

    在你的情况下,这可能是一个很好的起点:

    library(gghighlight)
    gghighlight_line(Trajectory,
                     aes(x= Passage, y = Freq, group = SNV),
                     Trajectory %in%  c(358,1212))
    

    【讨论】:

      【解决方案3】:

      我建议为您想要的组数(SVN == 358、1212 等)创建另一个具有唯一级别的分类变量,然后使用scale_color_manual 指定颜色。由于我不打算下载您的数据,因此下面是使用 iris 数据的示例。

      library(tidyverse)
      cols <- c('1' = 'red', '2' = 'blue', '3' = 'white')
      iris <- iris %>% mutate(cat_var = as.character(rep(1:3, each = 50)))
      ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, col = cat_var)) +
        geom_point() +
        scale_color_manual(values = cols)
      

      【讨论】:

        猜你喜欢
        • 2022-01-12
        • 1970-01-01
        • 2020-09-26
        • 1970-01-01
        • 2015-12-09
        • 1970-01-01
        • 2023-01-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多