У меня есть файл, который содержит следующий фрагмент, за исключением 3000 записей разных животных и группы крови
Файл A
Animal Bloodtype Count
Horse Opos 10
Horse Apos 5
Horse Bpos 4
Horse ABpos 5
Horse Oneg 6
Horse Aneg 7
Horse Bneg 9
Horse ABneg 10
Horse Unknown 10
Cat Opos 12
Cat Apos 15
Cat Bpos 14
Cat ABpos 15
Cat Oneg 16
Cat Aneg 17
Cat Bneg 19
Cat ABneg 14
Cat Unknown 14
Dog Opos 9
Dog Apos 23
Dog Bpos 12
Dog ABpos 42
Dog Oneg 45
Dog Aneg 23
Dog Bneg 45
Dog ABneg 32
Dog Unknown 32
Mouse Opos 3
Mouse Apos 4
Mouse Bpos 5
Mouse ABpos 3
Mouse Oneg 6
Mouse Aneg 8
Mouse Bneg 8
Mouse ABneg 20
Mouse Unknown 20
Pig Opos 19
Pig Apos 13
Pig Bpos 22
Pig ABpos 32
Pig Oneg 25
Pig Aneg 13
Pig Bneg 35
Pig ABneg 22
Pig Unknown 22
Я пытаюсь создать тепловую карту, где моя ось Yживотные, тип крови по оси X и значения в качестве значений.
Я пытаюсь покрасить каждый столбец независимо по типу крови своим собственным специфическим цветом и восходящим градиентом на столбец, чтобы легко определить, какое животное имеет высокое количество O-положительныхили A-положительный и т. д. и то, что у животных иссякает из-за уменьшения градиента ... и т. д. (потому что типы крови имеют цветовую кодировку для легкой визуализации)
По сути, я пытался сделать что-то вроде того, что было сделано вэтот вопрос о стеке потока: тепловые карты ggplot2: использование разных градиентов для категорий
или этот, но разные цвета в строке: тепловая карта на столбец с ggplot2
csv_file<-read.csv("~/Documents/FileA.csv")
csv_file.s <- ddply(csv_file, .(Bloodtype), transform, rescale = scale(Count))
csv_file.s$Category <- csv_file.s$Bloodtype
levels(csv_file.s$Category) <-
list("Opos" = c("Opos"),
"Apos" = c("Apos"),
"Bpos" = c("Bpos"),
"ABpos" = c("ABpos"),
"Oneg" = c("Oneg"),
"Aneg" = c("Aneg"),
"Bneg" = c("Bneg"),
"Oneg" = c("Oneg"),
"Unknown" = c("Unknown"))
csv_file.s$rescaleoffset <- csv_file.s$rescale + 100*(as.numeric(as.factor(csv_file.s$Category))-1)
scalerange <- range(csv_file.s$rescale)
gradientends <- scalerange + rep(c(0,100,200), each=8)
colorends <- c("white", "Aquamarine4", "white", "yellow4", "white", "turquoise4","white","orange4", "white", "slategray4","white","seagreen4","white","purple4","white","red4","white","blue4")
ggplot(csv_file.s, aes(Bloodtype, Animal)) +
geom_tile(aes(fill = rescaleoffset), colour = "transparent") +
scale_fill_gradientn(colours = colorends,
values = rescale(gradientends)) +
scale_x_discrete("", expand = c(0, 0))+
scale_y_discrete("", expand = c(0, 0)) +
theme(panel.background = element_rect(fill = 'white'))
theme_grey(base_size = 12) +
theme(legend.position = "none",
axis.ticks = element_blank(),
axis.text.x = element_text(angle = 330, hjust = 0))
Но градиент получается неправильным, а цвета повсюду.Я пытался найти, как назначить цвета для конкретных заголовков столбцов в тепловой карте, т.е. Unknown = "blue4", ABneg = "red4", но безрезультатно.По сути, я не знаю, что я делаю.:(
Любая помощь будет принята с благодарностью.