首页 文章

R,条形图上的标签顺序错误

提问于
浏览
1

我正在尝试向条形图添加标签 . 数据是 prop.table(xtabs()) 函数的输出,并包含在操作函数中,所以我认为它限制了我的基础绘图 . 原始数据有订购的因素,即我需要XXL在底部,XL下一个......等等 .

问题是 text() 函数:

  • 标签的顺序不正确,我试图转置矩阵,现在有些是正确的,有些则没有 .

  • 其他:似乎无法将标签与列对齐 .

dataF <- matrix(
  c(0.0287081340, 0.2044657097, 0.6306220096, 0.1259968102, 0.0095693780, 0.0006379585, 0.0087591241, 0.1149635036,
  0.5737226277, 0.2525547445, 0.0500000000, 0.0000000000, 0.0130584192, 0.0439862543, 0.5374570447, 0.3415807560,
  0.0628865979, 0.0010309278, 0.0029620853, 0.0112559242, 0.2434834123, 0.4751184834, 0.2606635071, 0.0065165877,
  0.0007883327, 0.0193141506, 0.3133622389, 0.4355538037, 0.2230981474, 0.0078833268, 0.0079646018, 0.0146017699,
  0.2641592920, 0.4539823009, 0.2522123894, 0.0070796460, 0.0003047851, 0.0033526364, 0.0850350503, 0.4102407802,
  0.4775982932, 0.0234684547),nrow=6,ncol=7) 
dimnames(dataF) <- list(c("XXL","XL","Large","Medium","Small","X-Small"),
                        c("1","2","3","4","5","6","7")) 
xx <- barplot(dataF, col=1:nrow(dataF), xlim=c(0, ncol(dataF) + 5), width = 0.85) legend("topright", rev(rownames(dataF)), fill = rev(1:nrow(dataF)))
text(x = 1:7, y = t(dataF), label = round(t(dataF)*100), pos = 3, cex = 1, col = "black")

1 回答

  • 0
    • Num1 's XXL is 0.0287 and XL is 0.2044, so XXL'的y位置是0.0287 / 2而XL是0.0287 0.2044 / 2

    • X-position aren 't 1:7. When you don' t给出参数 width 和/或 space ,它们是0.7,1.9,3.1等等 . 我认为最好不要将它们设置为保持x坐标 .

    这是我的榜样;

    ### calculatiton of y-position
    library(dplyr); library(reshape2)
    d <- melt(dataF) %>% group_by(Var2) %>% mutate(pos = cumsum(value) - 0.5 * value)
    
    ### draw
    xx <- barplot(dataF, col=1:nrow(dataF), xlim=c(0, 11)) # keep legend space by xlim (11 doesn't mean much)
    legend("topright", rev(rownames(dataF)), fill = rev(1:nrow(dataF)))
    
    with(subset(d, value > 0.04),    # don't write small values
         text(x = 0.7 + 1.2 * (Var2 - 1), y = pos, label = round(value * 100), cex = 1, col = "black"))
    

    enter image description here

相关问题