【问题标题】:setting some colors of ggplot with the same colour and get rid of labels [duplicate]用相同的颜色设置一些颜色的ggplot并去掉标签[重复]
【发布时间】:2021-11-24 07:28:00
【问题描述】:

我有一个更大的dataframe,但我在这里发布了一个可重复性的示例。

df = data.frame(fc_col = c(rep('apple',3),rep('orange',3),rep('banana',3)),var1 = c(rep(1:3,3)),var2 = c(20,10,5,30,15,2,40,27,8))

如果我绘图:

> ggplot(data=df, aes(x=var1, y=var2,colour = fc_col))+
+     geom_line()

我明白了:

我想将apple 转换为黑色,将banana orange 转换为单一颜色,例如蓝色。想象一下,在这种情况下,因子fc_col 没有 3 个级别,而是 300。我还想摆脱标签 banana orange 并写一个单独的说 fruits 并将它与蓝色放在一起如上所述的颜色。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    这可能会有所帮助。

    诀窍是,保留水果本身的fc_col,将在aes() 中用作group。并为color 参数创建另一个变量new_fac

    library(dplyr)
    library(ggplot2)
    
    df %>%
      mutate(new_fac = ifelse(fc_col == "apple", fc_col, "fruits") %>% as.factor()) %>%
      ggplot(aes(var1, var2, colour = new_fac, gruop = fc_col)) +
      geom_line() +
      scale_color_manual(values = c("black", "blue"))
    

    data.table

    library(data.table)
    df2 <- setDT(df)[,new_fac := ifelse(fc_col == "apple", "apple", "fruits")][]
    ggplot(df2, aes(var1, var2, colour = new_fac, gruop = fc_col)) +
      geom_line() +
      scale_color_manual(values = c("black", "blue"))
    

    【讨论】:

    • @moth 在aes 部分,color 来自new_facgroup 来自fc_col
    • @moth 在 R 基础中将是 df$fc_col_new &lt;- ifelse(df$fc_col == "apple", "apple", "fruits")
    • @moth 我添加了data.table 版本代码。我不确定这是否是您要找的。​​span>
    • @Park 太好了,谢谢。也许如果你添加两行关于明确的group 美学它可能会帮助其他人,我不知道,但现在我知道了
    • @moth 我对此几乎没有解释。 :D
    猜你喜欢
    • 1970-01-01
    • 2021-01-09
    • 2018-09-14
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    相关资源
    最近更新 更多