如何自定义ggplot2中geom_tile内的轮廓形状?

Posted

技术标签:

【中文标题】如何自定义ggplot2中geom_tile内的轮廓形状?【英文标题】:How to customize the shape of an contour made inside a geom_tile in ggplot2? 【发布时间】:2021-11-22 08:45:48 【问题描述】:

使用geom_tile 绘制了 X、Y 和 Z 数据集。我想在值小于或等于 2 的图块周围画一条等高线。为此,我使用了 stat_contour 函数,但结果不如预期。我怎样才能得到预期的结果? (最后一张)

library(ggplot2)

X <- 1:3
Y <- seq(0,20,10)

df <- expand.grid(X = X, Y = Y)

df$Z <- c(5,4,9,2.1,1.5,1.2,6,7,1.9)  

ggplot(df, aes(X, Y)) +
  geom_tile(aes(fill = Z)) +
  scale_fill_distiller(palette = "RdYlGn") +
  stat_contour(aes(z = Z),
               breaks = 2,
               color = 1)

我想要类似的东西:

【问题讨论】:

【参考方案1】:

您可以尝试使用仅包含 Z

layer <- df %>% filter(Z <= 2)

ggplot(df, aes(X, Y)) +
  geom_tile(aes(fill = Z)) +
  scale_fill_distiller(palette = "RdYlGn") +
geom_tile(data=layer, alpha = 0.0, color = "black", size = 1, linejoin = "round") +
  geom_tile(data=layer, alpha = 1, aes(fill = Z)) 

【讨论】:

以上是关于如何自定义ggplot2中geom_tile内的轮廓形状?的主要内容,如果未能解决你的问题,请参考以下文章

R语言ggplot2可视化:使用geom_rect函数在指定的位置添加自定义颜色的方框突出(hightlight)特定区域内的数据内容(transparent window/keyhole)

如何使用箭头指示的偏移 geom_text() 标签绘制 geom_tile()?

如何提高 ggplot2 数字分辨率

@ViewChild 返回未定义。我无法访问模式内的轮播 ElementRef

如何使用 ggplot2 + directlabels 为标签使用自定义名称

使用 purrr 时如何自定义 ggplot2 facet_grid 标签中的文本?