You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用facet_zoom实现单图内多目标区域的放大展示?

哈哈,我懂你遇到的问题了——用|把两个物种连起来确实会把整个数据集都选中,根本达不到分别放大的效果。其实ggforce的facet_zoom本身就支持多区域放大,只要调整参数就能实现你想要的上下排列效果,不用复杂的数据拼接~

直接上可行的代码:

library(ggplot2)
library(ggforce)

ggplot(iris, aes(Petal.Length, Petal.Width, colour = Species)) +
  geom_point() +
  facet_zoom(
    x = Species,  # 按物种因子来定义放大区域
    zoom.xy = Species %in% c("setosa", "virginica"),  # 指定要放大的两个物种
    split = TRUE,  # 把每个放大区域拆成单独面板
    ncol = 1  # 让所有面板(主图+两个放大图)上下排列
  )

给你解释下关键参数:

  • x = Species:告诉facet_zoom我们要基于Species这个分类变量来划分放大区域;
  • zoom.xy:用来筛选需要单独放大的类别,这里只选中setosa和virginica;
  • split = TRUE:默认情况下多个放大区域会合并成一个面板,开启这个参数就能把它们拆成独立的面板;
  • ncol = 1:强制所有面板(包括显示完整数据的主面板)按单列排列,正好符合你要的上下布局。

如果你的需求更复杂(比如想调整主面板和放大面板的位置、比例),还可以用facet_zoomzoom.size参数来调整放大面板的高度,比如加个zoom.size = 0.3就能让放大面板占主面板高度的30%。

内容的提问来源于stack exchange,提问作者user572549

火山引擎 最新活动