我想在散点图中标记点,但仅限于那些在散点图中facet_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))
知道如何制作这样标签就不会出现在非缩放面板上吗?
注意:以下答案适用于ggforce 的 GitHub 版本 https://github.com/thomasp85。截至撰写本文时,CRAN 上的版本似乎有不同的界面facet_zoom()
,即使包版本相同。
首先,获取要标记的数据子集并添加zoom
列,指定是否应在缩放面板中呈现数据(TRUE
),原面板(FALSE
), 或两者 (NA
):
dftxt <- dplyr::filter(df, example_values_x > 0.5) %>%
dplyr::mutate( zoom = TRUE ) ## All entries to appear in the zoom panel only
您现在可以将这个新数据框传递给geom_label_repel
,同时讲述facet_zoom()
使用zoom
列来确定应在何处绘制数据:
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))
注意,因为原来的df
没有zoom
柱子,facet_zoom()
会将其视为NA
并画出geom_point()
在两个面板中,根据需要:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)