【问题标题】:How do I geom_text a secondary data.frame into my main data.frame plot?如何将辅助 data.frame geom_text 放入我的主 data.frame 图中?
【发布时间】:2018-07-05 10:37:36
【问题描述】:

我最近制作了下一个 data.frame 的堆积条形图:

dput(head(mdfrsubsetN))
structure(list(MESES = structure(1:6, .Label = c("Enero", "Febrero", 
"Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", 
"Octubre", "Noviembre", "Diciembre"), class = "factor"), variable = structure(c(1L, 
1L, 1L, 1L, 1L, 1L), .Label = c("19N", "19DURAC", "50N", "50DURAC", 
"PUSHN", "PUSHDURAC", "GRATISN", "GRATISDURAC"), class = "factor"), 
    value = c(NA, NA, 1431, 982, 766, NA)), row.names = c(NA, 
6L), class = "data.frame")

使用此代码:

  ggplot(mdfrsubsetN, aes(MESES, value, fill = variable)) +
  geom_col(position = "fill") +
  scale_y_continuous(labels = percent)

它给了我这个图表。

现在我想使用辅助 data.frame 在相应的条上应用 geom_text。 data.frame 具有下一个结构。

dput(head(mdfrsubsetDURAC))
structure(list(MESES = structure(1:6, .Label = c("Enero", "Febrero", 
"Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", 
"Octubre", "Noviembre", "Diciembre"), class = "factor"), variable = structure(c(2L, 
2L, 2L, 2L, 2L, 2L), .Label = c("19N", "19DURAC", "50N", "50DURAC", 
"PUSHN", "PUSHDURAC", "GRATISN", "GRATISDURAC"), class = "factor"), 
    value = c(NA, NA, 5.04, 5.01, 4.61, NA)), row.names = 13:18, class = "data.frame")

我尝试了下一个代码,但结果不是我想要的。

  ggplot(mdfrsubsetN, aes(MESES, value, fill = variable)) +
    geom_col(position = "fill") +
    scale_y_continuous(labels = percent) +
    geom_text(data=mdfrsubsetDURAC, aes(x = MESES, y = value, label = value), position = "fill", vjust="center")+
    theme_classic() +
    scale_fill_discrete(name="PROMOS",
                        breaks=c("19N", "50N","PUSHN","GRATISN"),
                        labels=c("19", "50%", "PUSH", "GRATIS"))

这是结果。

我希望注释位于右侧栏上方,因为现在它们略高于我需要它们的位置。如果我能把它们放在每个条的中心,那就完美了。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    试试

     geom_text(data=mdfrsubsetDURAC, aes(x = MESES, y = value, label = value), hjust = 0.5,  vjust = 0.5,position = position_fill(vjust = 0.5))
    

    【讨论】:

    • 感谢您的回答!但是不,它仍然是失焦的。这是结果。 drive.google.com/open?id=1G2XTGkA_-qOvx8-NNCZ8aQE9R2ybXFzY
    • 您能否分享一个完整的假可重现数据集。要将解决方案测试为head,只需提供PROMOMS 19
    • 当然。在这里,您有两个数据框。主要区别在于x列。 1 = 一月等。 dataN <- data.frame( x = sample(c(1:12), 40, replace = TRUE), y = sample(c("19","50","PUSH","GRATIS"), 40, replace = TRUE), z = sample(1:40) )dataDURAC <- data.frame( x = sample(c(1:12), 40, replace = TRUE), y = sample(c("19DURAC","50DURAC","PUSHDURAC","GRATISDURAC"), 40, replace = TRUE), z = sample(1:40) )
    • 提供的数据集与发布的图表不匹配。总之,hjustvjust 可以分别接受以下职位:geom_text(data=dataN, aes(x = as.factor(x), y = z, label = z), hjust = rep(0.5,nrow(dataN)), vjust = c(.5, .25, rep(0,nrow(dataN)-2)) ,position = position_fill(vjust = 0.5))。因此,您可以分别传递每个类别的位置
    猜你喜欢
    • 2021-05-17
    • 1970-01-01
    • 2019-03-28
    • 2021-12-09
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    相关资源
    最近更新 更多