2017-08-31 92 views
1

當y軸不均勻時,如何製作熱圖(或者如果它被稱爲別的東西)?我也願意插值,但最好沒有它。如何製作Y軸不均勻的熱圖?

當我在均勻的時間間隔層,我可以積以此來獲得以下

ggplot(a, aes(x=time, y=Layer, fill = Value))+ 
    geom_tile()+ 
    scale_fill_gradient2(low="blue",mid="yellow",high="red", midpoint=0.5)+ 
    theme_bw() 

圖不過,我不能繼續當層1-10的自然數是沒有的。

enter image description here

dput(droplevels(head(smx,10))) 

structure(list(value = c(5.4023420028113e-07, 5.4023420028113e-07, 
    5.4023420028113e-07, 5.4023420028113e-07, 5.4023420028113e-07, 
    5.4023420028113e-07, 5.4023420028113e-07, 6.74006442227979e-08, 
    6.74006442227979e-08, 6.74006442227979e-08), 
time = structure(c(17156, 17156, 17156, 17156, 17156, 17156, 17156, 17162,  
    17162, 17162), 
class = "Date"), 
layer = c(0.0120349472577243, 0.0177233992991887, 0.00844582491793334, 
    0.00756873916071316, 0.0437965816456147, 0.0168056962032031, 
    0.0181395468747096, 0.0120349472577243, 0.0177233992991887, 
    0.00844582491793334)), 
.Names = c("value", "time", "layer"), 
row.names = c(NA, 10L), 
class = "data.frame") 

FULL數據將在此處

https://pastebin.com/mXUiSyvX

+0

當您嘗試繪製數據時出了什麼問題,以及您希望最終情節看起來如何? – Marius

+0

基本上,我得到了水平線和沒有塊。最後的情節應該像我附加的那個,但基本上,不規則大小的塊無處不在... – maximusdooku

+2

因此,瓷磚應該覆蓋整個陰謀區域,或掩蓋下一個瓷磚的底部?您需要考慮數據中的時間和圖層值如何映射到要查看的圖塊。 – Marius

回答

1

可以使用geom_rect代替geom_tile指定不同的切片高度。從幫助文件:

geom_rect和geom_tile做同樣的事情,但參數化 不同:geom_rect採用四角的位置(XMIN, XMAX,y最小和y),而geom_tile使用該瓷磚的中心和其尺寸(x,y,寬度,高度)的 。

假設在你的數據幀中的層變量是指各片的開頭(即YMAX),讓你在同一行的數據中得到YMIN,你可以爲每個日期滯後層變量幀。根據您的數據集,我還承擔了最低的瓷磚開始於YMIN = 0:

library(dplyr) 

ggplot(smx %>% 
     group_by(time) %>% 
     arrange(layer) %>% 
     mutate(layer.min = layer - diff(c(0, layer))) %>% #assuming y axis starts from 0 
     ungroup(), aes(fill = value))+ 
    geom_rect(aes(xmin = time - 0.5, xmax = time + 0.5, 
       ymin = layer.min, ymax = layer), 
      colour = "black") + 
    scale_fill_gradient2(low="blue",mid="yellow",high="red", midpoint = 0.2) + 
    scale_x_date(date_breaks = "1 day", date_labels = "%b %d") + 
    theme_bw() 

ggplot heatmap using geom_rect

(我列入&改變中點在這個答案更清晰的視覺區別瓷磚黑色輪廓做請隨意將其移除以適合您的實際使用情況。)