如何制作具有不同颜色代码的组条形图?

How to produced group barplot with different color codes?

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

数据

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 种颜色的较浅色调

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

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 比例)。当然有更复杂的方法来选择颜色。