[英]How to align geom_repel_text to geom_jitter points when subsetting the data?
我正在制作箱线图和抖动来显示每个单独的点。 然后我在每个点上放置文本标签。 这工作正常,但是一旦我尝试对我想要标签的点进行子集化,文本就不再对齐了。
这是我的代码(在此页面有一些帮助): Aligning geom_text to geom_jitter points
library(ggplot2)
ggplot(mtcars, aes(vs, wt, group = am, label = wt)) +
geom_boxplot(outlier.shape = NA) +
geom_jitter(position = position_jitter(seed = 1)) +
geom_text_repel(data = subset(mtcars, wt > 3),
position = position_jitter(seed = 1))
任何想法为什么这不起作用?
问题是,通过子集设置ggrepel
只会看到这部分数据,并假设您只是在绘制子集。 如果您希望ggrepel
考虑所有数据,请使用ifelse
条件来选择要标记的点而不是子集:
library(ggplot2)
library(ggrepel)
ggplot(mtcars, aes(vs, wt, group = am, label = wt)) +
geom_boxplot(outlier.shape = NA) +
geom_jitter(position = position_jitter(seed = 1)) +
geom_text_repel(aes(label = ifelse(wt > 3, wt, "")), position = position_jitter(seed = 1))
另一种方法是使用自定义 alpha 使您不想显示的权重不可见:
library(ggplot2)
ggplot(within(mtcars, visible <- wt > 3),
aes(vs, wt, group = am, label = wt)) +
geom_boxplot(outlier.shape = NA) +
geom_jitter(position = position_jitter(seed = 1)) +
geom_text_repel(position = position_jitter(seed = 1),
aes(alpha = visible)) +
scale_alpha_manual(values = c(0, 1)) +
guides(alpha = guide_none())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.