R - 在饼图中放置标签

标签 r pie-chart

使用 pie R 中的函数,标 checkout 现在饼图之外。有没有办法在饼图的每个切片内放置标签?

f=table(LETTERS[c(rep(1,7),rep(2,10),rep(3,5))])
pie(f)
它显示了如何使用 ggplot 执行此操作这里place-labels-on-pie-chart .有没有办法用 pie 来做?功能?
编辑:为了回应有关使用饼图的一些评论,我想与他们详细说明我的意图。我实际上只是使用饼图作为散点图矩阵的一部分来可视化整个数据框以进行回归。矩阵设置如下:
  • 下面板
    背景颜色较深的样本相关数表示绝对相关性更高。
  • 上面板
  • 数字散点图
  • 按因子计算的数字箱线图

  • 斜面板
  • 数字正态密度的直方图
  • 因子饼图


  • 看,我需要一些对角线上的因素并决定使用饼图。无论如何,我决定不使用标签并取消所有轴标签。我宁愿为更大的饼切片使用更深的颜色......所以也许这可能是一种显示信息的糟糕方式,但我认为它适用于因子变量,显示观察如何在因子水平上成比例比条形图更好。下图描述了lars中的糖尿病数据集包裹。
    diabetes data set

    最佳答案

    我认为没有一种简单的方法可以做到这一点,因为标签位置是硬编码的 - 看看最后

    body(pie)
    
            if (!is.na(lab) && nzchar(lab)) {
                lines(c(1, 1.05) * P$x, c(1, 1.05) * P$y)
                text(1.1 * P$x, 1.1 * P$y, labels[i], xpd = TRUE, 
                    adj = ifelse(P$x < 0, 1, 0), ...)
            }
        }
        title(main = main, ...)
        invisible(NULL)
    }
    

    但是你可以覆盖程序的这一部分
    # create a new pie function to save overwriting original
    newpie <- pie
    
    # Tweak the label positions - changed 1.1 to 0.7
    # also commented out the lines function - so that the  
    # small lines next to the labels are not plot
    newlbs <- quote(if (!is.na(lab) && nzchar(lab)) {
                       #lines(c(1, 1.05) * P$x, c(1, 1.05) * P$y)
                        text(0.7 * P$x, 0.7 * P$y, labels[i], xpd = TRUE, 
                                         adj = ifelse(P$x < 0, 1, 0), ...)
    })
    
    # add in the new lines of code - trial and error found the right position
    body(newpie)[[22]][[4]][[7]] <- newlbs
    
    newpie(f)
    

    所以看起来工作量很低,但它到达那里,你需要做更多的工作来调整文本的角度或格式。

    (可能结果是有理由这样做)

    关于R - 在饼图中放置标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25880110/

    相关文章:

    java - 如何向饼图中的每个切片添加自定义颜色?

    FXML 中的 Javafx 圆环图

    javascript - 如何在饼图切片内放置标签

    r - 刻度线和光栅边距之间的空间,ggplot2,R

    读取不良的 CSV 文件结构

    r - R reshape2 中 cast() 调用的自定义聚合函数出错

    javascript - 用ES6绘制饼图

    Highcharts:从圆环图中心去除阴影

    r - 在 mutate() 中找不到函数 "across"

    r - 如何从 R 中的字符串中删除最后一个字符(仅当它是字母时)?