我在R中的persp()
函数遇到了一个非常奇怪的问题。我使用split.screen()
函数来排列三个图。我生成了一个MWE如下:
f <- function(x,y) {
return(x*y)
}
u <- seq(0,5, by = 0.1)
v <- seq(0,5, by = 0.1)
z <- outer(u, v, f)
persp(u,v,z, ticktype="detailed", col = rgb(0.2,0.6,1))
pdf("~/Desktop/test.pdf", width = 10, height = 10) # adjust path as necessary
split.screen( figs = c( 2, 1 ) )
split.screen( figs = c( 1, 2 ) )
screen(2)
persp(u,v,z, ticktype="detailed", col = rgb(0.2,0.6,1))
screen(3, new = FALSE)
persp(u,v,z, ticktype="detailed", col = rgb(0.2,0.6,1))
screen(4, new = FALSE)
persp(u,v,z, ticktype="detailed", col = rgb(0.2,0.6,1))
close.screen(all = TRUE)
dev.off()
看看生成的PDF,表面看起来相当暗,尤其是在左侧。当我打印文件时,它们看起来更暗(太暗)。
我还附上了RStudio中3个绘图中的一个绘图缩放的截图。看起来好多了。我希望所有三个绘图看起来都像RStudio中的绘图缩放,即使打印出来。
有人知道怎么做吗?
干杯!
1条答案
按热度按时间jjhzyzn01#
您可以看到网格线在较小版本的图中靠得更近。如果您将使用RStudio的Zoom创建的图表缩小到与其他图表相同的大小,它看起来就像使用pdf设备创建的图表一样暗。问题是,由于在低视角下透视收缩,网格线看起来太近了(例如,图的后角)。如果放大图,可以看到:
以下是一些改进输出的选项:
1.减小线宽以获得更细的网格线。这将增加蓝色方块的相对面积,使整个表面看起来更亮,尤其是将减少由于浅视角导致网格线“聚束”而导致的远角变暗。
我发现
pdf
设备似乎不对lwd
参数起作用,但cairo_pdf
设备起作用(尽管网格线仍然比RStudio图形窗口中显示的要粗)。lwd=0.5
在RStudio图形窗口中显示效果很好(也适用于输出到png文件)对于cairo_pdf输出,lwd=0.1
导致比默认线宽更细的线条,但没有我希望的那么细。然而,当我将线宽设置为低于0. 07时,没有任何图形出现。下面是与上面相同的图形,但线宽设置为0.1,并使用RStudio的PDF输出:1.通过在
seq
函数中使用较大的by
值来减少网格线的数量。1.对透视曲面使用较亮的颜色。
1.网格线使用较浅的颜色(例如,在
persp
函数中设置border="gray40"
甚至border="white"
)。例如,下面是调用
persp
的结果,背景颜色稍微亮了一些,网格线变细了,并且是白色而不是黑色: