r - 如何分隔ggplot2 geom_point中的车道组?
问题描述
我正在绘制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()
解决方案
我相信解决您的问题的最简单方法是在您的数据框中创建一个带有“分组”因子的列“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)
推荐阅读
- openapi - Open API 3.0 parameter dependencies: required parameters if type is "one of" (with shared parameters)
- jquery - JQuery returns DOM element when I haven't imported it but an object when I have
- c++ - `wide-exec-charset` dose not change the charset of `wchar_t`
- java - using one maven project into another maven project
- lua - Istio EnvoyFilter that checks header for a valid token
- python - 如何从放大的 matplotlib.pyplot 图中读取新的限制?
- regex - Length of entire regex pattern
- javascript - Are same domain iframes faster than cross domain?
- php - Add PayPal and BACS to Klarna Checkout
- python - Django project doesn't work when setting project root url to not "/"