2010-10-12 32 views
0

我正在使用geom_tile來繪製映像圖,並且想要清除零級以清晰起見。使用ggplot2刪除圖像映射的零級

#dummy data 
set.seed(1) 
tdata <- data.frame(cat1=rep(letters[1:3],4),cat2=sort(rep(LETTERS[1:4],3)),val=rpois(12,1.5)) 
tdata$val<-tdata$val/max(tdata$val) 

我已發現2層的方法可以做到這一點,但兩者都具有它們的缺點:

1)

qplot(cat1,cat2,data=tdata,geom="tile",fill=val) + scale_fill_continuous(limits=c(.Machine$double.eps,1)) 

這具有這樣的缺點,即最小值的顏色不被打印在規模。

2)

qplot(cat1,cat2,data=tdata,geom="tile",fill=val,alpha=ifelse(val,1,0)) 

這具有阿爾法刻度繪製太多的缺點。在I()中包裝alpha參數會導致失敗。

有沒有辦法做到這一點沒有缺點?

+0

你是什麼意思'清零水平'?首先,您的測試數據在tdata $ val中沒有任何零... – Spacedman 2010-10-12 16:31:26

+0

它應該這樣做,除非'set.seed(1)'在您的系統上生成不同的隨機數。我的意思是如果數值爲零而不是顏色漸變的底端,則不繪製任何東西。 – James 2010-10-13 08:55:44

回答

2

您可以將數據分組。

qplot(..., data=subset(tdata, val > 0), ...) 
qplot(cat1,cat2,data=subset(tdata, val >0),geom="tile",fill=val) 
+0

當然,沒有想到,謝謝 – James 2010-10-13 09:14:36