首页 文章

将特定颜色分配给绘图函数中的特定分类变量,其中r为多个数据集

提问于
浏览
1

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

我现在必须处理大量数据并尝试让我的生活更轻松,所以我想创建一个管道,我可以在其中上传文件,然后获得绘图,饼图,统计分析和PCA作为结果 .

在我的数据集中,我有8个重新特定的分类变量 . 让我们称他们为A-H . 因此,为了节省时间,我想为特定变量分配特定颜色:例如 . A =蓝色,B =白色等

plot(sample.tsv $ Annotation,col = c(“blue”,“white”,“浅蓝”,“green”,“purple”,“red”,“black”,“yellow”),

我的功能目前看起来像上面那个,它对第一个数据集非常有用,但是如果在我的下一个数据集中B不存在(当然可能是这种情况),那么颜色会混淆 . 我错过了一个简单的解决方案吗?我已经找了3个小时,我找不到任何东西,这对网站来说真的有帮助 . 先感谢您!

1 回答

  • 1

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

    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)
    

    enter image description here

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

    enter image description here

相关问题