【问题标题】:How to separate groups of lanes in ggplot2 geom_point?如何分隔ggplot2 geom_point中的车道组?
【发布时间】:2019-06-27 09:21:51
【问题描述】:

我正在绘制来自data.frame 的数据,其结构如下:

    A       B       C       D
    29.8    8.7     0.1     Type_1

前三列是浮点数,最后一列是字符串。第 4 列中有 13 个可能的字符串,对于每个字符串,通过geom_point() 在图中生成一行。前三列中的浮点值用于填充“点”行(此处无关)。基本上,每一行包含数千个点,这些点根据它们在 A、B 和 C 中的值分散。

这是它的样子(没有轴标签,因为它是未发布的东西):

现在的问题:我想通过以特定方式增加行之间的宽度来根据不同的标准对行进行分组,也就是说,不是通过增加行之间的宽度一般而是具体在哪里我要它。该怎么做?

一个虚构的例子:type_1 和 type_2 属于同一类,必须一起观察,而 type_3 必须分开以避免混淆。

底线:有没有一种快速简便的方法来指定行组之间的宽度

这是我的情节代码的相关部分:

P1 <- ggplot(...) + 
geom_point(position = position_jitter(w = 0.15, h = 0), alpha=0.3, size=0.5) +
scale_x_discrete() +
scale_y_continuous(limits=c(0,100), breaks=seq(0,100,10)) + 
scale_color_gradient2(breaks=seq(0,100,20), 
                      limits=c(0,100), 
                      low="green3",
                      high="darkorchid4",
                      midpoint=50,
                      name="") +
coord_flip()

【问题讨论】:

    标签: r ggplot2 width grouping rows


    【解决方案1】:

    我相信解决您的问题的最简单方法是在您的数据框中创建一个带有“分组”因素的列“E”。由于您没有提供可重用的数据,我相信 Dplyr 是创建此附加列的最佳解决方案,但我无法提供大量代码。输出应该是这样的:

     A       B       C       D       E
    29.8    8.7     0.1     Type_1  group_1
    29.6    8.2     0.7     Type_2  group_1
    ...
    

    那么你可以通过以下方式使用 facet_wrap(~E, ncol=1):

    P1 <- ggplot(...) + 
    geom_point(position = position_jitter(w = 0.15, h = 0), alpha=0.3, size=0.5) +
    scale_x_discrete() +
    scale_y_continuous(limits=c(0,100), breaks=seq(0,100,10)) + 
    scale_color_gradient2(breaks=seq(0,100,20), 
                      limits=c(0,100), 
                      low="green3",
                      high="darkorchid4",
                      midpoint=50,
                      name="") +
    coord_flip()+
    facet_wrap(~E, ncol=1)
    

    【讨论】:

    • 谢谢,您的建议似乎效果很好。但是,您能否对其进行编辑以解释我实际上是如何从分面中排除空行的?目前我得到了每个方面的所有行,但每个方面只有 1 或 2 行有数据,其他的(应该是)空的。是scales="free_y" 吗?
    • 对于未来的读者:是的,我通过指定 scales="free_y" 解决了我自己的第二个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多