我正在从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()
答案 0 :(得分: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)