更改堆叠条形图中的单个条的颜色R

时间:2020-01-29 11:02:00

标签: r bar-chart stacked

我有不同细胞系中感染水平的数据(按严重程度分级为1-3)。我创建了一个堆叠的条形图,但是当我想按颜色分隔线条时,只能更改所有条形的颜色。我希望2 WT有一个红色调色板,2 KO有一个黄色调色板,而AB则有一个蓝色调色板。

我的数据如下:

My data

我尝试了这个,但是它给了我下面的图:

inf.level<-read.csv("Infection_level.csv")

cols<-c("darkred", "red", "darksalmon", "darkorange3", "darkorange", "orange", "blue4", "blue", "cornflowerblue")

barplot(as.matrix(inf.level), ylab="Tsetse infection (%)", col=cols)]

My barplot

任何帮助将不胜感激!

谢谢:)

编辑dput(信息级别):

structure(list(WT_MG = c(29.41176471,23.52941176, 11.76470588),WT_PV = c(21.42857143,7.142857143,14.28571429),KO_MG = c(5.555555556, 16.66666667,33.33333333),KO_PV = c(0L,0L,0L),AB_MG = c(0, 28.57142857,4.761904762),AB_PV = c(0,0,5.555555556)),.names = c(“ WT_MG”,“ WT_PV”,“ KO_MG”,“ KO_PV”,“ AB_MG”,“ AB_PV”),类= “ data.frame”,row.names = c(NA, -3L))

1 个答案:

答案 0 :(得分:0)

也许您可以分别为条形着色。我从这篇帖子here中发现了一些想法。

cols做成一个矩阵,其中包含不同条形的不同调色板。

cols<-matrix(c(rep(c("darkred", "red", "darksalmon"), 2),
               rep(c("darkorange3", "darkorange", "orange"), 2), 
               rep(c("blue4", "blue", "cornflowerblue"), 2)), 
             ncol = 6, nrow = 3)

inf.level.mat <- as.matrix(inf.level)

barplot(inf.level.mat, ylab="Tsetse infection (%)")

for (i in 1:ncol(inf.level.mat)) {
  x = inf.level.mat
  x[,-i] <- NA
  barplot(x, col = cols[,i], add=TRUE)
}

barplot with different color palettes