【问题标题】:Adjusting the relative space of facets (without regard to coordinate space)调整构面的相对空间(不考虑坐标空间)
【发布时间】:2011-05-11 11:36:44
【问题描述】:

我有一个主要图表和一些次要信息,我想在它下面的另一个图表中分面。刻面效果很好,除了我不知道如何控制一个方面与另一个方面使用的相对空间。我知道 space='free' 但这仅在范围对应于所需的相对大小时才有用。

例如,我可能想要一个图表,其中第一个方面占 80%,第二个方面占 20%。这是一个例子:

data <- rbind(
    data.frame(x=1:500, y=rnorm(500,sd=1), type='A'), 
    data.frame(x=1:500, y=rnorm(500,sd=5), type='B'))
ggplot() + 
    geom_line(aes(x=x, y=y, colour=type), data=data) + 
    facet_grid(type ~ ., scale='free_y')

上面创建了两个垂直尺寸相等的面。在facet_grid 函数中添加space='free' 会更改尺寸,使得下刻面大约比上刻面大5 倍(如预期的那样)。

假设我希望鞋面大 2 倍,具有相同的数据集和方面的排序。我怎样才能做到这一点?

在重新调整数据集和手动覆盖轴标签(如果是,如何)时,是否有一些技巧可以做到这一点?

另类

如下所示,可以使用视口来渲染为多个图形。我曾考虑过这一点,实际上在过去使用这种方法实现了标准绘图和视口。

问题是很难让 x 轴与这种方法对齐。所以如果有办法固定y轴标签区域的大小和图例区域的大小,可以生成2个具有相同渲染区域的图形。

【问题讨论】:

  • 我应该指出,但我需要 x 轴精确对齐。在单独的图表中渲染是考虑过的,但不会像 x 轴对齐那样非常困难。这对于查看时间序列中的重合指标很重要。

标签: r ggplot2


【解决方案1】:

Kohske Takahashi 向 facet_grid 发布了一个补丁,允许指定 facet 的相对大小。查看主题:

http://groups.google.com/group/ggplot2/browse_thread/thread/7c5454dcc04bc7b8

如果幸运的话,我们会在 ggplot2 的未来版本中看到这一点。

【讨论】:

    【解决方案2】:

    您不需要为此使用构面 - 您也可以使用 viewport 函数来执行此操作。

    > ratio = 1/3
    > v1 = viewport(width=1,height=ratio,y=1-ratio/2)
    > v2 = viewport(width=1,height=1-ratio,y=(1-ratio)/2)
    > print(qplot(1:10,11:20,geom="point"),vp=v1)
    > print(qplot(1:10,11:20,geom="line"),vp=v2)
    

    Ratio 是顶部面板占整个页面的比例。也可以试试 2/3 和 4/5。

    如果您在两个图中的图例或轴标签大小不同,这种方法可能会变得很难看,但要获得修复,请参阅 ggExtra 包中的 align.plots 函数和 ggplot2 作者 Hadley Wickam 的 notes on this very topic


    目前还没有简单的方法可以用 facets 做到这一点,但如果你准备好去editing the Grid,你可以在绘制 ggplot 图形后修改它以获得这种效果。


    using grid and ggplot2 to create join plots using R上也可以看到这个问题。

    【讨论】:

    • 那些不是真的facets,是吗?
    • 如果不深入到网格级别,您将无法对构面做他想做的事。此外,辅助数据可能使用与数据不同的维度,因此在许多情况下它们可能不合适。
    • “在重新调整数据集和手动覆盖轴标签(如果是,如何)时,这是唯一的方法吗?” - 不,这不是唯一的方法:-)
    • 谢谢,因为哈德利已经把一些东西放在一起来对齐情节,应该可以工作。我更喜欢在方面做的方式,但显然不支持。谢谢你的回答
    • 我认为 Hadley 正在计划更好地解决这一类问题。
    猜你喜欢
    • 2021-06-30
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 2016-06-14
    • 2018-10-24
    • 2011-09-02
    • 1970-01-01
    相关资源
    最近更新 更多