如何自动化条形图标签

时间:2019-07-03 18:01:09

标签: r

我希望数据标签出现在每个小节的末尾,在标签和小节的末尾之间留一个空格。我希望标签以百分比表示。请注意,该图是使用原始数字而非百分比值构建的。我希望该问题的解决方案在R中。对类似的先前问题的解答对我而言无效。

 table(cont$cont9) # 1=0, 2=0,3=2, 4=2, 5=21
 #1=0%, 2=0%,3=8%, 4=8%, 5=84%

 par(mar=c(0, 5, 0, 2.1))
 H <- c(0, 0, 2, 2, 21) # Create the data for the chart, cont3.#
 M <- c("Very Low", "Low", "Medium", "High", "Very High")

 barplot(H, col =c("slategray1", "slategray1","slategray1",
              "slategray1", "steelblue3"), 
    horiz = TRUE, 
    family="Arial", border = NA, names.arg = M, 
    xlim = range(0,100), ylim = range(0, 0.08), 
    axes = FALSE, width = 0.01, las=1, xaxt='n')

我想在每个小节的末尾添加百分比数据标签。在基数R中有解决方案。

1 个答案:

答案 0 :(得分:1)

要执行问题所要求的操作,请保留返回值barplot并将其用作标签的y坐标。返回值为:

  

一个数字矢量(或矩阵,当旁边为TRUE时),例如mp,给出   绘制的所有条形中点的坐标,对于添加到   图。

x坐标是绘制的值,其位置已调整,pos = 4
在下面的代码中,我还将保持对par的调用返回值。这是一个通用的好习惯。完成绘制后,请恢复默认设置。

op <- par(mar=c(0, 5, 0, 2.1))

bp <- barplot(H, col =c("slategray1", "slategray1","slategray1",
              "slategray1", "steelblue3"), 
    horiz = TRUE, 
    family = "Arial", border = NA, names.arg = M, 
    xlim = range(0,100), ylim = range(0, 0.08), 
    axes = FALSE, width = 0.01, las=1, xaxt='n')
text(H, bp, labels = H/sum(H), pos = 4)

par(op)

enter image description here

注意:

虽然我没有更改,但是发现

xlim = c(0, 30), ylim = c(0, 0.08),

更自然。

  • 它使用c,而不是range
  • xlim的值与range(H)一致。