gpt4 book ai didi

r - 如何处理R透视图的暗区

转载 作者:行者123 更新时间:2023-12-04 09:36:26 25 4
gpt4 key购买 nike

我在 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 中的绘图缩放,即使在打印时也是如此。

有人知道怎么做吗?

干杯!

dark

enter image description here

最佳答案

在较小的绘图版本中,您会看到网格线靠得更近的效果。如果将使用 RStudio 的 Zoom 创建的图形缩小到与其他图形相同的大小,它看起来与使用 pdf 设备创建的图形一样暗。问题是由于在低视角(例如,绘图的后角)的透视缩短,网格线看起来太靠近了。如果放大绘图,您可以看到这一点:

enter image description here

以下是一些改进输出的选项:

  1. 减小线宽以获得更精细的网格线。这将增加蓝色方 block 的相对面积,使整个表面看起来更亮,尤其会减少由于视角较浅导致网格线“聚集”而导致远角变暗。

    persp(u,v,z, ticktype="detailed", col = rgb(0.2,0.6,1), lwd=0.5)

    我发现 pdf设备似乎没有作用于 lwd论点,但 cairo_pdf设备会(尽管网格线仍然比它们在 RStudio 图形窗口中显示的要粗)。 lwd=0.5非常适合在 RStudio 图形窗口中查看(也可以输出到 png 文件)。对于 cairo_pdf 输出,lwd=0.1导致线条比默认线宽更细,但没有我想要的那么细。但是,当我将线宽设置为低于 0.07 时,根本没有出现任何绘图。这是与上面相同的图,但线宽设置为 0.1 并使用 RStudio 的 PDF 输出:

    enter image description here

  2. 通过使用较大的 by 值来减少网格线的数量在您的seq功能。

  3. 为透视表面使用更亮的颜色。

  4. 对网格线使用较浅的颜色(例如,在 border="gray40" 函数中设置 border="white" 甚至 persp)。

例如,下面是对 persp 的调用的结果。 .背景颜色更亮一点,网格线更细,是白色而不是黑色:

png("~/persp.png", 500,500)
persp(u,v,z, ticktype="detailed", col=hcl(240,100,80), border="white", lwd=0.5)
dev.off()

enter image description here

关于r - 如何处理R透视图的暗区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23939251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com