【问题标题】:How to produced group barplot with different color codes?如何制作具有不同颜色代码的组条形图?
【发布时间】:2016-06-12 23:48:25
【问题描述】:

我正在尝试使用以下格式的数据制作分组条形图。我写了下面的代码,但它不符合我的目的

数据

data1 <- read.table(text="              NAS  AG   PT      ST
1kb_+/-TSS   1239 885   1232    952
1.5kb_+/-TSS 1440 1092  1467    1181
2kb_+/-TSS   1647 1248  1635    1398
2.5kb_+/-TSS 1839 1403  1794    1594", header=TRUE)

代码

data2=as.matrix(data1)
b<-barplot(data2, legend= rownames(data2), beside= TRUE,las=2,cex.axis=0.7,cex.names=0.7,ylim=c(0,3000), col=c("cornflowerblue","cornsilk4","red","orange"))
tx2 <- data2
text(b,tx2+10, as.character(tx2),pos = 3, cex = 0.5, col = "darkgreen")

下面是图片

我不想要这样的颜色组合我想要每个组的颜色,例如 NAS(每行的蓝色阴影)、AG(玉米丝的阴影4、PT(读取的阴影)、ST(橙色的阴影) )

如何修改代码?所以每个类别都有我在主代码中使用的 4 种颜色的浅色调

【问题讨论】:

    标签: r rscript


    【解决方案1】:

    如果您希望每种颜色都有不同的色调,则必须自己创建这些颜色。这是一个可以计算较浅颜色的函数

    fadecolors <- function(colors, steps=4) {
        rr <- col2rgb(colors)
        unlist(Map(function(a) {
            rgb( seq(255, a[1],length.out=steps+1)[-1],
            seq(255,a[2],length.out=steps+1)[-1],
            seq(255,a[3],length.out=steps+1)[-1],
               maxColorValue=255)
        }, as.data.frame(rr)))
    }
    
    colors <- c("cornflowerblue","cornsilk4","red","orange")
    barplot(data2, legend= rownames(data2), beside= TRUE,las=2,cex.axis=0.7,cex.names=0.7,ylim=c(0,3000), col=fadecolors(colors))
    

    这会导致

    基本上,这个想法是为每种颜色添加一定数量的白色(以 RGB 比例)。当然还有更复杂的方法来选择颜色。

    【讨论】:

    • 嗯,好的,谢谢这个功能很好,但图例不适合不同的颜色代码。
    • 如何将图例与每个颜色代码集成?该功能非常有用。非常感谢。
    • adjustcolor 也这样做 barplot(data2, beside= TRUE, col = Vectorize(adjustcolor)(rep(colors, each = 4), alpha.f = c(.3,.6,.8,.9)))
    • @vchris_ngs 添加args.legend=list(fill=colors) 将返回组的纯色。目前不确定您真正想在图例中添加什么。
    • @rawr 很好地致电adjustcolor。这是我不知道的功能。
    猜你喜欢
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 2012-04-25
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多