【问题标题】:How do I add percentage and fractions to ggplot geom_text label?如何将百分比和分数添加到 ggplot geom_text 标签?
【发布时间】:2017-09-10 22:20:15
【问题描述】:

我有一个数据集,我有兴趣在其中查看测试分数和经历事件的人的百分比:

dat <- data.frame(score = 1:7,
              n.event = c(263,5177,3599,21399,16228,10345,1452),
              n.total = c(877,15725,13453,51226,32147,26393,7875),
              percentage = c(30,33,27,42,50,39,18))

我可以用图表上的百分比来绘制它,如下所示:

ggplot(data=dat, aes(x=score, y=percentage)) +
  geom_line() +
  geom_text(aes(label = paste0(dat$percentage,"%")))

或者我可以用这样的分数来绘制它:

ggplot(data=dat, aes(x=score, y=percentage)) +
  geom_line() +
  geom_text(aes(label = paste0("frac(",dat$n.event, ",", dat$n.total, 
  ")")),parse = TRUE)

但我希望他们两个并排。这不起作用:

ggplot(data=dat, aes(x=score, y=percentage)) +
  geom_line() +
  geom_text(aes(label = paste0(dat$percentage,"%","frac(",dat$n.event, 
  ",", dat$n.total, ")")),parse = TRUE)

我得到这个错误:

解析错误(text = as.character(lab)) : :1:3: 意外输入 1: 30% 压裂 (263,877) ^

感谢您的帮助!

【问题讨论】:

    标签: r parsing ggplot2 geom-text direct-labels


    【解决方案1】:

    这样的事情怎么样:

    ggplot(data=dat, aes(x=score, y=percentage)) +
      geom_line() +
      geom_text(aes(label = paste0(dat$percentage,"%"))) + 
      geom_text(aes(label = paste0("frac(",dat$n.event, ",", dat$n.total, 
      ")")),parse = TRUE, nudge_x = 0.0, nudge_y = -2)
    

    使用nudge_xnudge_y 参数将标签放到所需位置

    【讨论】:

      【解决方案2】:

      问题在于parse=True 告诉geom_text 使用R 数学注释(在?plotmath 中描述)。在此注解中,% 是一个必须转义的特殊符号,同样,空格也会被忽略。

      为了使% 与公式的其余部分保持一致,我们必须使用'%' 对其进行转义,使用* 将其连接到前一个单词,并在使用~ 后添加一个空格。结果是:

      ggplot(data=dat, aes(x=score, y=percentage)) +
           geom_line() +
           geom_text(aes(label = paste0(dat$percentage,"*\'%\'~","frac(",dat$n.event, 
                                        ",", dat$n.total, ")")),parse = TRUE)
      

      【讨论】:

      • 有道理!像这种方式甚至比其他答案更好,因为我不必调整两件事。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2013-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      相关资源
      最近更新 更多