2015-05-13 1 views
1

я наткнулся на эту статью по методам природы, которые при условии очень хороший Heatmap: http://www.nature.com/nmeth/journal/v12/n4/full/nmeth.3311.htmlR: Как рисовать карту тепла, деленную на дигональную линию?

В отличии от другой карты тепла каждого прямоугольника делится на диагональную линию, с 1 частью представляет данные литературы и другой In- данные дома. Я думаю, что это очень хороший способ сравнить данные. Тем не менее, я не знаю, как рисовать этот рис в Р. Кто-нибудь знает, как это сделать?

Небольшой скриншот приведен ниже:

enter image description here

Ниже демонстрационный набор данных из сетки 2 * 2. Я бы хотел, чтобы цвет четырех реглагоров разделился на группу.

Para1 Para2 Value Group 
A  D  0.2 A1 
A  E  0.4 A1 
B  D  0.56 A1 
B  E  0.32 A1 
A  D  0.7 B1 
A  E  0.16 B1 
B  D  0.12 B1 
B  E  0.71 B1 
+0

Можете ли вы предоставить образец данных и что вы хотите показать? Для простоты грубой силы нужно рисовать прямоугольники и треугольники при отсутствии чего-то более элегантного. – DaveTurek

+0

@DaveTurek Большое спасибо. Я просто добавил образец данных. –

ответ

1

Я не вижу ничего в элегантную heatmap или lattice::levelplot. Может быть, кто-то знает, как в ggplot.

Вот грубая сила проверка концепции:

d=data.frame(p1=rep(LETTERS[1:2],times=2,each=2), 
      p2=rep(LETTERS[4:5],times=4), 
      value=c(.2,.4,.56,.32,.7,.16,.12,.71), 
      group=rep(c("A1","B1"),each=4)) 

x=as.numeric(d$p1) 
y=as.numeric(d$p2) 

plot(1,xlim=c(1,length(unique(x))+1),ylim=c(1,length(unique(y))+1), 
    type="n",bty="n",xaxt="n",yaxt="n",xlab="",ylab="") 

for(i in 1:nrow(d)) { 
    if(d$group[i]=="A1") polygon(x[i]+c(0,1,1),y[i]+c(0,0,1),col=gray(d$value[i])) 
    if(d$group[i]=="B1") polygon(x[i]+c(0,1,0),y[i]+c(0,1,1),col=gray(d$value[i])) 
} 

axis(1,at=sort(unique(x))+.5,labels=levels(d$p1),lty=0) 
axis(2,at=sort(unique(y))+.5,labels=levels(d$p2),lty=0) 

Вы, вероятно, хотите добавить цветовую гамму, и использовать что-то более красочное, чем мое отображение value в оттенках gray (более низкие значения темнее).

+0

Спасибо большое Дэйв. Это действительно помогает. Я использовал ваш метод и реализовал его с помощью ggplot2 и успешно построил его. –

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

  • Нет связанных вопросов^_^