r - ggplot 中缺少组标签

标签 r ggplot2 label

我想使用stat_summaryhggplot中添加分组标签而不是单个标签。我的数据是这样的:

dat <- read.table(text = "   id2 small_oe xinterceptm startidm endidm medium_oe medium_region
1    1       NA           1        1      1        NA          <NA>
                  2    2     1.66          NA        1      4      1.36        FL-M-4
                  3    3     1.21          NA        1      4      1.36        FL-M-4
                  4    4       NA           4        4      4        NA          <NA>
                  5    5     1.34          NA        4      7      1.17        FL-M-5
                  6    6     0.97          NA        4      7      1.17        FL-M-5
                  7    7       NA           7        7      7        NA          <NA>
                  8    8     1.21          NA        7     10      1.19       FL-M-14
                  9    9     0.91          NA        7     10      1.19       FL-M-14
                  10  10       NA          10       10     10        NA          <NA>
                  11  11     1.34          NA       10     13      1.17       FL-M-13
                  12  12     0.96          NA       10     13      1.17       FL-M-13
                  13  13       NA          13       13     13        NA          <NA>
                  14  14     1.30          NA       13     16      1.20        NY-M-4
                  15  15     1.18          NA       13     16      1.20        NY-M-4
                  16  16       NA          16       16     16        NA          <NA>
                  17  17     0.87          NA       16     18      0.87        NY-M-5
                  18  18       NA          18       18     18        NA          <NA>
                  19  19     1.09          NA       18     20      1.09        NE-M-5
                  20  20       NA          20       20     20        NA          <NA>
                  21  21     1.60          NA       20     22      1.60        FL-M-3
                  22  22       NA          22       22     22        NA          <NA>
                  23  23     1.14          NA       22     25      1.14        FL-M-1
                  24  24     1.12          NA       22     25      1.14        FL-M-1
                  25  25       NA          25       25     25        NA          <NA>
                  26  26     0.71          NA       25     27      0.71        FL-M-2
                  27  27       NA          27       27     27        NA          <NA>
                  28  28     1.16          NA       27     29      1.16       FL-M-12
                  29  29       NA          29       29     29        NA          <NA>
                  30  30     1.14          NA       29     31      1.15       FL-M-11",
                  header = T, stringsAsFactors = F)

当我尝试向 ggplot 中的每个组添加标签时,某些组的标签丢失了。 (图和我的代码附在此处)我该如何解决这个问题?

library(ggplot2)
library(ggstance)

ggplot(dat, aes(x = id2, y = small_oe)) +
  theme(panel.background = element_rect(fill = "white", colour = "grey50")) +
  theme(panel.grid.major = element_blank(),   ## adjust the theme: clean background, remove x-axis labels/values
        panel.grid.minor = element_blank(),
        axis.text.x = element_blank(),
        axis.title.x = element_blank(),
        axis.ticks.x = element_blank()) +
  geom_vline(aes(xintercept = xinterceptm), linetype = "dotted", alpha = 0.3) +  ## add vertical lines seperating median cluster groups
  geom_segment(aes(x = startidm, xend = endidm, y= medium_oe, yend = medium_oe), alpha = 0.4) + ## add line segments as median region o:e
  stat_summaryh(fun.x = mean, aes(label = medium_region, y = medium_oe+0.02), geom = "text", size = 3, alpha = 0.4, color = "blue")

enter image description here

谢谢!

最佳答案

dat$medium_region 包含 NA,因此是空白标签。您应该将它们更改为适当的内容。

dat$medium_region <- gsub("<NA>", "Unknown", dat$medium_region)

如果所有 NA 没有名称但您希望显示标签,那么这可能是重命名所有 NA 的合适方法。

解决方案:

所以我认为这两个标签对位于同一 y 平面(medium_oe 值)感到不满意,因此您可以添加一个向量来专门将这两个标签移出对齐位置。 创建一个名为 mod 的新列并更改值:

dat$mod <- 0
dat$mod[dat$mod$medium_region == FL-M-5] <- 0.01

然后将 stat_summaryh 参数更改为:

y = medium_oe + 0.02 + mod

这适用于您的示例数据,但需要针对其他数据集中的特定重叠样本更改 mod。不理想,但我不明白为什么他们不能共享相同的 y 坐标。

这可能与此警告有关:

4: Removed 1 rows containing missing values (geom_text).

关于r - ggplot 中缺少组标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48915263/

相关文章:

r - 根据组成员资格创建矩阵

r - ggplot2 Axis 的主题 - x Axis 和 y Axis 之间的间隙

html - 如何使用xpath在任意位置找到一个label属性

javascript - Blogger javascript 与标签搜索冲突

r - 如何引用稍后通过 bookdown 显示的绘图?

r - 如何控制 write.table() 输出中的小数位数?

r - 在 data.table 中按组和按日期连续累积列中的条目

r - R 中的 mpg 数据集

r - 如何在ggplot2中设置geom_smooth的se(置信区间)颜色?

swift - 加载更改后在 Swift 中更改 UILabel