如何制作具有不同颜色代码的组条形图?
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 比例)。当然有更复杂的方法来选择颜色。
我正在尝试使用以下格式的数据制作分组条形图。我写了下面的代码,但它没有达到我的目的
数据
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 比例)。当然有更复杂的方法来选择颜色。