如何使geom_text_repel()標簽跨越多個facet_grid()窗格?例如,如果有許多長標簽不適合每個網格圖的正確尺寸,則標簽應該像facet_grid()單個圖一樣定位。
例如:
df <- data.frame(
x = rep(1:3, 5),
y = runif(15),
label = paste0("very long label ", 1:15),
group = do.call(c, lapply(paste0("group ", 1:5), function(x) rep(x, 3)))
)
library(ggplot2)
library(ggrepel)
ggplot(df, aes(x, y, label = label))
geom_point()
facet_grid(cols = vars(group))
geom_text_repel()

如果有另一種方法可以在 x 軸上對樣本進行分組,以模擬按列的 facet-grid,那也很好。就我而言,我需要按分組變數(相應標記)對樣本進行分組,然后在每個組中按連續變數對它們進行排序。
uj5u.com熱心網友回復:
使用clip = "off"來自coord_cartesian:
library(ggplot2)
library(ggrepel)
ggplot(df, aes(x, y, label = label))
geom_point()
facet_grid(cols = vars(group))
geom_text_repel()
coord_cartesian(clip = "off")

如果這還不夠,另一種選擇是使用 multilining with stringr::str_wrap:
library(stringr)
library(dplyr)
df %>%
mutate(label_wrapped = str_wrap(label, width = 20)) %>%
ggplot(aes(x, y, label = label_wrapped))
geom_point()
facet_grid(cols = vars(group))
geom_text_repel()
coord_cartesian(clip = 'off')

資料
set.seed(2)
df <- data.frame(
x = rep(1:3, 5),
y = runif(15),
label = paste0("very very very long label ", 1:15),
group = do.call(c, lapply(paste0("group ", 1:5), function(x) rep(x, 3)))
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/426682.html
