2016-11-29 3 views
1

Я делаю карту тепла, хотя хотел бы разделить столбцы и добавить линию между каждой строкой. Я хорошо знаю, что это делает так хорошо, а не тепловую карту. Но об этом и говорит мой босс.Модификация для нагрева карты

Ниже приведен мой код для текущей карты тепла. Любые советы по разделению столбцов & добавили бы линию между каждым «человеком».

x11 <- c(0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1) 
x22 <- c(1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1) 
x <- rbind(x11, x22) 
hv <- heatmap(t(x), col = c("cornflowerblue", "hotpink"), margins = c(4, 12), Colv = NA, Rowv = NA, scale = "none", xlab ="", ylab ="", main = "", labCol=c("BP", "Cx"), cexCol =2) 
legend("topright", c("No Osteomyelitis", "Osteomyelitis"), col=c("cornflowerblue", "hotpink"), bty="n", fill=c("cornflowerblue", "hotpink")) 

Да Я закончил с использованием приведенного ниже кода. Спасибо за ответ. Я использовал gplots & избавился от цветового ключа & гистограмма & вместо этого добавила мою собственную легенду.

hv <- heatmap.2(t(x), key=FALSE, trace="none", colsep = seq(1,nrow(x)-1), 
     rowsep = seq(1,ncol(x)-1), 
     sepcolor = "white", 
     sepwidth = c(0.1, 0.0005), col = c("cornflowerblue", "hotpink"), margins = c(4, 12), Colv = NA, Rowv = NA, scale = "none", xlab ="", ylab ="", main = "", labCol=c("BP", "Cx"), cexCol =2) 
legend("topleft", c("No Osteomyelitis", "Osteomyelitis"), col=c("cornflowerblue", "hotpink"), bty="n", fill=c("cornflowerblue", "hotpink")) 

ответ

0

Я предлагаю вам переключиться на gplots::heatmap.2(), что позволяет лучше контролировать черчения с преимущественно теми же аргументами.

Опираясь на ваш хороший пример (+1 кстати), добавив colsep, rowsep, sepcolor и sepwidth аргументы контролировать расстояние между строками и столбцами (и trace = 'none', потому что я не люблю его) дает:

x11 <- c(0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1) 
x22 <- c(1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1) 
x <- rbind(x11, x22) 
hv <- heatmap(t(x), col = c("cornflowerblue", "hotpink"), margins = c(4, 12), Colv = NA, Rowv = NA, scale = "none", xlab ="", ylab ="", main = "", labCol=c("BP", "Cx"), cexCol =2) 
legend("topright", c("No Osteomyelitis", "Osteomyelitis"), col=c("cornflowerblue", "hotpink"), bty="n", fill=c("cornflowerblue", "hotpink")) 

library(gplots) 
heatmap.2(t(x), 
     col = c("cornflowerblue", "hotpink"), 
     margins = c(4, 12), 
     Colv = NA, Rowv = NA, 
     scale = "none", 
     xlab ="", 
     ylab ="", 
     main = "", 
     labCol=c("BP", "Cx"), 
     cexCol = 2, 
     trace = 'none', 
     colsep = seq(1,nrow(x)-1), 
     rowsep = seq(1,ncol(x)-1), 
     sepcolor = "white", 
     sepwidth = c(0.1, 0.05)) 

heatmap with separation

Чтобы отделить столбцы более, increse первый элемент sepwidth и аналогично для строк.

+0

да согласен, поделится кодом, в котором я закончил использование. Благодаря! – user3810226

Смежные вопросы