ggforce facet_缩放-仅在缩放的示例上添加标签

ggforce facet_缩放-仅在缩放的示例上添加标签,r,ggplot2,ggforce,R,Ggplot2,Ggforce,我想在散点图中标记点,但只标记facet\u zoom面板中的点。以下是一个例子: library(ggplot2) library(ggforce) library(ggrepel) library(magrittr) labels <- letters example_values_x <- rnorm(26) example_values_y <- rnorm(26) df <- data.frame(labels, exam

我想在散点图中标记点,但只标记
facet\u zoom
面板中的点。以下是一个例子:

library(ggplot2)
library(ggforce)
library(ggrepel)
library(magrittr)

labels <- letters
example_values_x <- rnorm(26)
example_values_y <- rnorm(26)

df <- data.frame(labels, 
                 example_values_x, 
                 example_values_y)
df %>% ggplot(aes(y = example_values_y, 
                  x = example_values_x)) +
  geom_point() +
  facet_zoom(x = example_values_x > 0.5) + 
  geom_label_repel(data = filter(df, example_values_x > 0.5), aes(label = labels))
库(ggplot2)
图书馆(警队)
图书馆(ggrepel)
图书馆(magrittr)

标签注:以下答案适用于。在撰写本文时,CRAN上的版本对于
facet\u zoom()
似乎有不同的接口,即使包版本相同。

首先,获取要标记的数据子集并添加一个
zoom
列,指定是否应在缩放面板(
TRUE
)、原始面板(
FALSE
)或两者(
NA
)中呈现数据:

请注意,由于原始的
df
没有
zoom
列,
facet\u zoom()
将其视为
NA
并根据需要在两个面板中绘制
geom\u point()

dftxt <- dplyr::filter(df, example_values_x > 0.5) %>%
  dplyr::mutate( zoom = TRUE )      ## All entries to appear in the zoom panel only
df %>% ggplot(aes(y = example_values_y, 
                  x = example_values_x)) +
  geom_point() +
  facet_zoom(x = example_values_x > 0.5, zoom.data=zoom) +   # Note the zoom.data argument
  geom_label_repel(data = dftxt, aes(label = labels))