【问题标题】:Make resizable plots using the grid graphing system in R使用 R 中的网格图形系统制作可调整大小的图
【发布时间】:2011-02-11 01:42:41
【问题描述】:

最近我读到了 R 中的网格图形系统。它非常灵活,掌握了它应该能够制作非常复杂的图形。但是我还没有找到任何好地方可以让我绘制一个也可以重新调整大小的图表?问题如下:如何在R 中使用grid 绘图系统,使最终输出实际上可以调整大小?

【问题讨论】:

    标签: r graphics customization r-grid


    【解决方案1】:

    这样做的一种方法是不直接使用夹点图形系统,而是使用lattice 接口。据我所知,lattice 包是随 R 一起安装的,它为底层的 Trellis 图(基于网格的图)形成了一个非常灵活的接口。 Lattice 还允许您直接操作网格,因此实际上对于最复杂的图表,这将是您所需要的。

    如果您真的要使用网格图形系统本身,则必须使用正确的坐标系才能使其具有可扩展性。 “native”、“npc”(归一化父坐标)或“snpc”(方形归一化父坐标)都允许您重新缩放图形,因为它们给出了相对于当前视口大小(或它的一个方面)的坐标.

    为了充分利用这些,请确保您非常了解视口的概念。我不得不承认我还有很多东西要学。如果你真的想继续读下去,我可以推荐这本书R Graphics from Paul Murrell

    仔细看看那本书的第 5 章。你也可以从例子的R代码中学到很多东西,也可以在this page上找到

    给你一个:

    grid.circle(x=seq(0.1, 0.9, length=100), 
                y=0.5 + 0.4*sin(seq(0, 2*pi, length=100)),
                r=abs(0.1*cos(seq(0, 2*pi, length=100))))
    

    完全可扩展。如果您查看grid.circle 的帮助页面,您会发现default.units="npc" 选项。在这种情况下,这就是设置正确坐标系的地方。比较

    grid.circle(x=seq(0.1, 0.9, length=100), 
                y=0.5 + 0.4*sin(seq(0, 2*pi, length=100)),
                r=abs(0.1*cos(seq(0, 2*pi, length=100))),
                default.units="inch")
    

    这是不可扩展的。

    【讨论】:

    • 这是否意味着如果我必须在 R 中具有网格图形的“调整大小”能力,我必须开始使用相同的图形系统绘制整个图形?我有你推荐的书。我将再次阅读相关部分,看看它现在是否更有意义。
    • @Sam :特别重要的是要注意使用正确的坐标系。如果您以英寸为单位指定位置,则绘图不可缩放。如果您在 npc 或 native(相对于轴)中指定它们,它们是可缩放的。但是涉及的方面太多了,如果没有具体的例子,这里不可能一一概括。如果您按照书中的示例进行操作,就会有所收获。
    猜你喜欢
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    相关资源
    最近更新 更多