首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ggforce facet_zoom -仅在放大的示例上使用标签

ggforce facet_zoom -仅在放大的示例上使用标签
EN

Stack Overflow用户
提问于 2017-07-20 17:46:09
回答 1查看 1.3K关注 0票数 4

我想在散点图中标记点,但只标记在facet_zoom面板中的点。下面是一个示例:

代码语言:javascript
复制
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))

知道怎么做吗?这样标签就不会出现在非缩放面板上了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-19 18:02:00

注意:下面的答案适用于 ggforce的GitHub版本。在编写这篇文章时,CRAN上的版本对于似乎有不同的接口,尽管包版本是相同的。

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

代码语言:javascript
复制
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列来确定数据应该绘制的位置:

代码语言:javascript
复制
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()

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45221783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档