【问题标题】:Setting size of the rgl device设置 rgl 设备的大小
【发布时间】:2013-08-06 14:28:40
【问题描述】:

我的 rgl 设备的全屏/非全屏有问题。

目前我使用 R 3.00

我在我的设备中绘制了一个 persp3d 图(库 rgl),它在一个很小的窗口中打开:

R 代码:

persp3d(x, y, z, theta=50, phi=25, expand=0.75, col=red,
        ticktype="detailed", xlab="", ylab="", zlab="",axes=FALSE)
axes3d(c('x--','z'))

axis3d(edge='y+-',at =c(1,500,1000,1500,2000,2320),
labels =rownames(fd)[c(1,500,1000,1500,2000,2320)])

看起来像这样:

我现在旋转它并将单个 png 文件保存到我的驱动器中。问题是,png文件太小了?我想使用 LaTex 和 \animategraphics 命令将它们放入一篇论文中,但它是像素化的(不清晰)。

如果我单击 rgl 设备中的全屏图标,使 R 图变大,这确实有帮助,一切正常。问题是,它周围有太多的空白区域。有了上面、下面、左边和右边的空白区域,我无法将它包含在 LaTex 中,因为它的尺寸(宽度、高度)过大而不适合。我有 200 个 png 文件,所以用油漆手动删除空白不是一件好事。

小图是这样的:

如果你放大(这是LaTex所做的,当我把它放到我的论文中时,它会增加图片,截图来自我的LaTex文件。相同的图片,角度略有不同,但问题保持不变):

您会看到它看起来像像素(不好)。此外,您已经可以看到带有太多空白的大文件的问题:上面带有一些空白的小图片已经破坏了我的标题。

那么我该如何解决这个问题呢?我如何告诉 R 使用全屏绘图但周围没有太多空白?当我点击全屏并保存这些图片时,一切都很好,除了它周围的空白。

这是 png 文件,其周围有太多空白(在此屏幕截图中,下面没有空白,但当我使用正确的缩放时,它就在那里):

进一步说明:这是我用来保存 png- 文件的 R 代码:

M <- par3d("userMatrix")
movie3d( spin3d(rpm=3), duration=20,dir="C:/test/movie", clean=FALSE )
play3d( spin3d(rpm=3), duration=20)

【问题讨论】:

    标签: r plot latex save rgl


    【解决方案1】:

    使用 par3d(windowRect = c(20, 30, 800, 800))

    【讨论】:

      【解决方案2】:

      您可以使用 par3d 检查 RGL 设备的状态。 “空白”由“windowRect”值控制。随着显示尺寸的增加,这些值会自动增加;

      > par3d("windowRect")
      [1] 100 100 356 378
      > par3d("windowRect")  # made the window have roughly 4 times the area
      [1] 137   0 744 544
      

      您还可以指定 windowRect 的角。

      ?par3d
      

      这应该可以让您控制避免“空白问题和标题重叠”。

      如果您想在查看窗口中放大对象,rgl.viewpoint 功能可以放大。数字越小,对象看起来越大。

      rgl.viewpoint(  zoom = .5 )
      

      【讨论】:

      • 感谢您的回答,但这对我没有帮助。在手册中,它说 windowRect 给了我“显示窗口的左侧、顶部、右侧和底部(以像素为单位)”。我试图将其设置为例如5,5,5,5(小边框的小值),例如par3d("usersMatrix",windowRect=c(5,5,5,5)) 但它不起作用(没有图片)。看来,这只是给我的大小,就好像我会用鼠标增加它一样?因此,如果我设置更大的数字,我会再次遇到同样的问题。所以这不是一个解决方案,因为我还有空白?
      • 需要有足够的“空白”,以便您可以旋转对象。除非对象是球形的,否则这意味着当对象以某些视角显示时会有一些空白。如果要删除所有空白,您可能需要将其导出到图像并进行编辑。试试par3d("windowRect"= c(0,0,1200,1200))。我认为最后两个值需要很大。
      • 感谢您的回答,但是:空白不是旋转所必需的吗?即使没有空白,它仍然可以旋转,或者说,一个较小的白色边界(一些小边界就可以了)。当我使用 par3d("windowRect"= c(161,23,876,691)) 这给出了正确的情节大小,但问题是,还有太多的空间?如果我减少或更改数字,绘图本身(表面的大小)也会发生变化,因此不仅减少了空白,而且还减少了完整的绘图。将其导出为 png 并手动删除空白 200 次?
      【解决方案3】:

      设置 r3dDefaults 就足够了:

      r3dDefaults$windowRect <- c(0,50, 800, 800) 
      plot3d(mdatapc, col=kmeanspc.cluster, size = 10)    
      

      【讨论】:

        【解决方案4】:

        我认为使用aspect3d() 也可能会派上用场。

        aspect3d(x=5, y=1 , z =1)
        rgl.viewpoint(zoom = .5)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-11-17
          • 1970-01-01
          • 1970-01-01
          • 2020-03-01
          • 2020-03-07
          • 1970-01-01
          • 1970-01-01
          • 2017-08-24
          相关资源
          最近更新 更多