0

您好我正在尝试将多个内核密度估计绘制并叠加到一个图中(使用 KS 库)。因为我想覆盖多个内核,所以我正在“玩”透明度颜色设置,以便最终的情节更容易理解。但是,由于某种原因,当我绘制它时,它显示了一个带有颜色/透明度填充的网格图案,我不知道如何删除它,以便颜色全部均匀......

这些是我用来将绘图导出为 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()

如果有人知道为什么当我对颜色使用此透明度选项时,它也会显示一个网格,然后将其移除,这样它就会显示出一个非常棒的光滑表面!

4

2 回答 2

0

这是一个很老的问题,但我想我会把我的回答放在那里以供将来参考。您看到的网格(如果我认为您指的是网格)是在 pdf 文件中创建光栅图形的结果。pdf 在渲染栅格方面做得很差。如果您想让网格(真的很细的白线,对吗?)消失,请尝试将文件保存为原生光栅文件类型(例如,jpeg(),tiff)。

在大多数情况下,将 R 图形输出为 pdf() 效果很好,因为这样您就有了一个很好的、可缩放的矢量图形,您不必担心分辨率。但是,当您创建像图像图这样的图形时,有时它会变得不稳定(这只会发生在我的 Mac 上,而不是我的 PC 上)。

下面的一些代码可以说明。如果你运行 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()

在此处输入图像描述

于 2015-01-12T22:31:19.903 回答
0

你有一种非常奇怪的方式来指定col. rgb尝试使用该功能,而不是那些我很确定不应该存在的 NA 。它需要(至少)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
于 2013-07-16T08:51:32.013 回答