1

我有一些数据,我想圈出一些不同的子集。我正在使用ggplot2andggforce来绘制数据并在geom_mark_ellipse数据周围绘制一个椭圆 ( )。

我有一个问题,椭圆上连接器的位置(对于我的数据)处于不明确的位置(在两个椭圆的结合处,在两个相互掠过的椭圆的边界上)。

如何手动将连接器的位置设置为椭圆?或者至少影响他们进入特定区域?

我在下面有一些代码可以捕捉到我绘制数据的精神。出于示例的目的,我怎样才能使所有标签出现在绘图的左上角,或者对于每个因素都在 x == 0、-2、-4 处加入椭圆?

library(tidyverse)
library(ggforce)


x <- c(-1,0,1,-3,-2,2,3,-5,-4,4,5)
t <- c(1,1,1,2,2,2,2,3,3,3,3)

tmp <- as_tibble_col(x, column_name = "x")
tmp <- tmp %>% mutate(t = t)

#How do I move the position of the label connectors on the ellipses?
tmp %>% 
  ggplot(aes(x=x, y=x)) +
  geom_mark_ellipse(aes(label = t, group=t),con.cap = 0) +
  geom_point()

reprex 包(v0.3.0)于 2020 年 5 月 5 日创建

4

1 回答 1

0

我已经设法为我的人为示例做到了,但还没有尝试使用我的真实数据,但还是有希望的。

如下面的代码所示,我创建了数据来填充我不想在其中放置标签的区域(左上角),并给它一个"". 我手动将连接器的颜色设置NA为该因素,并摆脱了所有内容的标签背景。因为因子是“”,所以标签是一个空字符串,什么都不显示。我还设置了我不想看到的椭圆scale_colour_manual的颜色。NA我还过滤了geom_point以不显示因子为 的数据""。最后,我删除了图例。

library(tidyverse)
library(ggforce)

x <- c(-1,0,1,-3,-2,2,3,-5,-4,4,5)
t <- c(1,1,1,2,2,2,2,3,3,3,3)

tmp <- as_tibble_col(x, column_name = "x")
tmp <- tmp %>% mutate(y=x)
tmp <- tmp %>% mutate(t = t)

#now lets add some dodging data
tmp <- tmp %>% mutate(t = as.character(t))
tmp <- tmp %>% add_row(x=c(-5,2.5,-2.5), y=c(-2.5,5,2.5),t="")

tmp %>% 
  ggplot(aes(x=x, y=y)) +
  geom_mark_ellipse(aes(label = t, group=t, colour=factor(t)),
                    con.cap = 0, con.colour = c(NA, "black","black","black"),
                    label.fill=NA) +
  scale_colour_manual(values=c(NA, "black", "black", "black")) +
  geom_point(data = subset(tmp, t != "")) +
  theme(legend.position = "none")

reprex 包(v0.3.0)于 2020-05-06 创建

于 2020-05-06T09:11:42.203 回答