【问题标题】:Assigning specific colours to specific categorical variables in plot function with r for mulple data sets使用 r 为多个数据集的绘图函数中的特定分类变量分配特定颜色
【发布时间】:2017-10-28 07:34:30
【问题描述】:

我是 R 新手,也是这个社区的新手。

我现在必须处理大量数据,我努力让我的生活更轻松,所以我想创建一个管道,我可以在其中上传文件,然后获取绘图、饼图、统计分析和结果是 PCA。

在我的数据集中,我有 8 个重复出现的特定分类变量。让我们称他们为 A-H。所以为了节省时间,我想给一个特定的变量分配一个特定的颜色: 例如。 A = 蓝色,B = 白色等。

情节(sample.tsv$注解, col = c(“蓝色”、“白色”、“浅蓝色”、“绿色”、“紫色”、“红色”、“黑色”、“黄色”),

我现在的函数看起来像上面的那个,这对第一个数据集很有效,但是如果在我的下一个数据集中 B 不存在(可能是这种情况),颜色当然会混淆。 我错过了一个简单的解决方案吗? 我已经找了 3 个小时,但我找不到任何东西,这在网上确实有帮助。 提前谢谢!

【问题讨论】:

    标签: r plot colors


    【解决方案1】:

    使用match,我们可以创建一个将不同颜色与每个变量名称相关联的映射。
    这是一个应该澄清这个想法的例子。
    我们开始考虑两个部分共享相同变量名称的数据集。

    set.seed(1)
    df1 <- as.data.frame(matrix(rnorm(100),ncol=5))
    df2 <- as.data.frame(matrix(rnorm(100),ncol=5))
    names(df2) <- c("V1","V2","V4","V6","V5")
    
    names(df1)
    [1] "V1" "V2" "V3" "V4" "V5"
    names(df2)
    [1] "V1" "V2" "V4" "V6" "V5"
    

    现在我们生成一个包含所有变量名的向量和一个相关颜色的向量

    all.vars <- unique(c(names(df1),names(df2)))
    all.cols <- rainbow(length(all.vars))
    

    然后我们为每个变量名匹配不同的颜色

    ( cols.df1 <- all.cols[match(names(df1), all.vars)] )
    [1] "#FF0000FF" "#FFFF00FF" "#00FF00FF" "#00FFFFFF" "#0000FFFF"
    ( cols.df2 <- all.cols[match(names(df2), all.vars)] )
    [1] "#FF0000FF" "#FFFF00FF" "#00FFFFFF" "#FF00FFFF" "#0000FFFF"
    

    最后,我们可以使用这些颜色来绘制两个数据集。这里我们使用ggplot2

    library(reshape)
    df1m <- melt(cbind(df1,id=1:nrow(df1)),id.vars="id")
    df2m <- melt(cbind(df2,id=1:nrow(df2)),id.vars="id")
    
    library(ggplot2)
    ggplot(aes(x=id, y=value, col=variable),data=df1m)+geom_line(lwd=1)+
      scale_color_manual(values=cols.df1)
    

    ggplot(aes(x=id, y=value, col=variable),data=df2m)+geom_line(lwd=1)+
      scale_color_manual(values=cols.df2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      • 2019-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-03
      • 1970-01-01
      相关资源
      最近更新 更多