R语言 有没有办法使用ggplot2将截面标签添加到图的x轴上?

x7rlezfr  于 2023-06-03  发布在  其他
关注(0)|答案(2)|浏览(192)

你好,我有一堆可以分组的数据。我想在图中显示这些数据。到目前为止没什么特别的。但我遇到了一个问题,即如何显示数据,以表明它们的分组。我想要的是x轴上每个部分的标题:例如,字符串“header 1”位于轴的开头,“header 2”位于A和B之间,依此类推。这是我目前得到的代码

# packages
library (ggplot2)

# data
df =  data.frame(
  x = factor(c("A", "B", "C", "B", "A", "C")), 
  y = c(10, 15, 8, 12, 9, 10)  
)

# Base plot
p <- ggplot(df, aes(x,y)) + geom_point() + 
  coord_flip()

p

在类似的topic上已经存在一个线程。然而,我更喜欢一个更“ggplot-y”的方式这样做。另外,我希望标题直接位于x轴。
任何帮助都会很棒,谢谢

h5qlskok

h5qlskok1#

像这样吗

library (ggplot2)
library(dplyr)

df <- data.frame(
    x = gl(4, 1, labels = c('first', 'A', 'second', 'B')),
    y = rnorm(4),
    show_marker = c(FALSE, TRUE)
)

df |>
    ggplot(aes(x,y)) + 
    geom_point(data = df |> filter(show_marker)) +
    scale_x_discrete(drop = FALSE,  ) +
    coord_flip() +
    theme(axis.text.y = element_text(angle = c(90, 0),
                                     hjust = c(0)
                                     )
          )

owfi6suc

owfi6suc2#

我们可以使用facets:

# data
df =  
  data.frame(
  x = factor(c("A", "B", "C", "B", "A", "C")), 
  label = factor(c("header 1", "header 2", "header 3", "header 2","header 1", "header 3")), 
  y = c(10, 15, 8, 12, 9, 10)  
)

  ggplot(df, aes(x,y)) +
  geom_point() + 
  coord_flip() + 
  facet_wrap(~ label,ncol = 1,strip.position = "left", scales = "free_y") +
  theme(panel.spacing = unit(0,'cm'),
        strip.placement = "outside",
        strip.background = element_blank(),
        strip.text = element_text(hjust = 0))

创建于2023-06-02使用reprex v2.0.2

相关问题