使用cairo_pdf设备在R中生成图时,所得图不遵守图边界。线条和阴影区域将溢出到下部x轴和右侧y轴(侧面1和4)。我想知道在R中使用'cairo_pdf'时是否可以解决此问题?
作为示例,请参见以下图片:
此图像是使用以下最小工作示例代码构建的PDF文件的屏幕截图:
cairo_pdf(file="test.pdf", width=0.5, height=0.5)
par("mar"=c(0.25,0.25,0.25,0.25))
plot(NA, xlim=c(0,1), ylim=c(0,1), axes=FALSE)
polygon(x=c(-1,-1,2,2), y=c(-1,2,2,-1), density=5, col="green3", lwd=10)
abline(h=0.25, col="red", lwd=5)
abline(h=0.75, col="hotpink", lwd=5, lend=1)
abline(v=0.25, col="blue", lwd=5)
abline(v=0.75, col="cyan", lwd=5, lend=1)
box()
dev.off()
在这里,我使用“多边形”以绿色绘制阴影区域,边界位于图的外部。我还使用“倾斜”绘制了两组水平/垂直线。每对中的第一对使用标准的圆形线帽,而每对中的第二对使用对接线帽。
如您所见,阴影线和默认的圆角末端沿下轴和右轴都超出了绘图区域。仅当使用'lend = 1'时,我才能将绘图的斜线包含在内。我不知道这种对阴影线的修复。
我会天真地希望R绘制区域得到尊重,除非用户明确指定,否则不可能在该区域之外进行绘制。
我已经在其他cairo设备(SVG和PS)上对此进行了测试,并且还重现了相同的行为,表明这是cairo图形API或其在R中的实现问题。
使用标准R'pdf'图形设备时不会发生此现象。我通常会切换到“ pdf”,但是,“ cairo_pdf”相对于“ pdf”有几个优点,尤其是输出文件大小减小并且支持更大的UTF-8字符数组,因此理想情况下,我更喜欢使用cairo_pdf。
预先感谢您对这个问题的任何见解。