Изменение цвета отдельных столбцов в гистограмме с накоплением R - PullRequest
2 голосов
/ 29 января 2020

У меня есть данные об уровнях инфекции (по степени тяжести 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

Буду признателен за любую помощь!

Спасибо:)

EDIT dput (inf.level):

структура (список (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 = * тысячу двадцать шесть * (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"), class = "data.frame", row.names = c (NA, -3L))

1 Ответ

0 голосов
/ 30 января 2020

Возможно, вы можете покрасить полосы по отдельности. Я наткнулся на несколько идей из этого поста здесь .

Сделал бы 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

...