2013-07-16 69 views
0

嗨,我想要繪製和(使用KS庫)覆蓋多個內核密度估計到一個單一的情節。由於我想疊加多個內核,因此我正在使用透明度顏色設置「玩」,以便最終的繪圖更易於理解。然而,當我繪製它的一些原因,它顯示了帶有顏色的顏色/透明度填充的網格圖案,我不知道如何刪除,這樣的顏色是統一的所有...使用透明度設置,R

這些都是選項我用我的情節導出爲PDF,

pdf(paste(database$species[1],".pdf",sep=""),width=11,height=8,paper="a4r",pointsize=15) 
par(mfrow=c(1,1)) 
par(mar=c(5,4,4,3)) 

這是我使用,使劇情和與他人覆蓋它的代碼,

# plot of KUD-Depth utilization 

plot(ddhat.day,cont=c(95),lwd=1,add=F,display="filled.contour2",col=c(NA,"#8B000040"),xaxs="i",yaxs="i", 
plot(ddhat.night,cont=c(95),lwd=1.5,add=TRUE,display="filled.contour2",col=c(NA,"#00008020"), 
     xlab="",ylab="",las=1,ann=F,bty="l",cex=0.6,yaxs="i",xaxs="i") 
     xlab="",ylab="",las=1,ann=F,bty="l",cex=0.6,xlim=c(0,max(dd[,1]+dd[,1]*0.6)),ylim=c(50,-10)) 

plot(ddhat.day,cont=c(50),add=T,display="filled.contour2",col=c(NA,"#FF000040"),lty=2,lwd=1, 
     xlab="",ylab="",cex=0.6) 

plot(ddhat.night,cont=c(50),add=TRUE,display="filled.contour2",col=c(NA,"#00BFFF40"),lwd=1.5, 
     xlab="",ylab="",cex=0.6)   
plot(ddhat.day,cont=c(0,0),drawpoints=TRUE,col="black",ptcol="grey15",cex=0.45,add=TRUE) 

plot(ddhat.night,cont=c(0,0),drawpoints=TRUE,col="black",ptcol="grey15",cex=0.45,add=TRUE,pch=4) 

dev.off() 

如果任何人有一個想法,爲什麼當我使用這種顏色的透明度選項也會顯示一個網格,並將其刪除,以便顯示出光滑的表面這將是太棒了!

回答

0

你必須指定col的一個非常奇怪的方式。我相當肯定不應該在那裏的那些NAs,而是嘗試使用rgb函數。它需要(至少)4個參數,它們是紅色,綠色,藍色和alpha(透明度)通道,用分數表示。

col=rgb(0, 0, 0, 1) # black 

col=rgb(0, 1, 1, .5) # green + blue = cyan, 50% opaque 

col=rgb(1, 0, 0, .2) # red, 20% opaque = 80% transparent 
+0

對於plot.kde,我認爲你必須specifiy可選項col = C(NA,RGB(0,0,0,1)),如果你只想填補輪廓內核用顏色,否則會填滿繪圖區域的範圍。我嘗試使用rgb來指定顏色和透明度,但我仍然有同樣的問題。 – user1626688

0

這是一個很老的問題,但我想我會把我的迴應放在那裏以備將來參考。您所看到的網格(如果它是我認爲您所指的網格)是在pdf文件中創建柵格圖形的結果。 pdf在渲染柵格方面做得不好。如果你想使電網(真的瘦了白線,對吧?)走開,嘗試將文件保存爲本地光柵文件類型(例如,JPEG(),TIFF)。

在大多數情況下,輸出的R圖形爲PDF(),因爲你有一個很好的,可伸縮矢量圖形,而您也不必擔心分辨率的偉大工程。然而,當你創建像圖像情節這樣的圖像時,它有時會變得不可思議(這隻發生在我的Mac上,而不發生在我的電腦上)。下面

某些代碼可以說明。如果你運行pdf版本(在Mac上),你會得到下圖。如果你運行jpg版本,它將消失。

library(MASS) 
library(ks) 
data(iris) 

fhat <- kde(x=iris[,1:2]) 

jpeg("test.jpg") 
plot(fhat, display="filled.contour2", cont=seq(10,90,by=10)) 
dev.off() 

pdf("test.pdf") 
plot(fhat, display="filled.contour2", cont=seq(10,90,by=10)) 
dev.off() 

enter image description here