gpt4 book ai didi

r - 使用 ggplot2 堆叠条形图标签

转载 作者:行者123 更新时间:2023-12-04 06:06:58 29 4
gpt4 key购买 nike

我正在尝试绘制以下数据:

to_graph <- structure(list(Teacher = c("BS", "BS", "FA"
), Level = structure(c(2L, 1L, 1L), .Label = c("BE", "AE", "ME",
"EE"), class = "factor"), Count = c(2L, 25L, 28L)), .Names = c("Teacher",
"Level", "Count"), row.names = c(NA, 3L), class = "data.frame")

并希望在每条条的中间添加标签,表示该条的百分比。基于 this post ,我想出了:
ggplot(data=to_graph, aes(x=Teacher, y=Count, fill=Level), ordered=TRUE) + 
geom_bar(aes(fill = Level), position = 'fill') +
opts(axis.text.x=theme_text(angle=45)) +
scale_y_continuous("",formatter="percent") +
opts(title = "Score Distribution") +
scale_fill_manual(values = c("#FF0000", "#FFFF00","#00CC00", "#0000FF")) +
geom_text(aes(label = Count), size = 3, hjust = 0.5, vjust = 3, position = "stack")

但它
  • 对图形没有任何影响
  • 如果确实如此,可能不会显示百分比(尽管我不完全确定这一点)

  • 任何帮助是极大的赞赏。谢谢!

    最佳答案

    文本的 y 坐标是实际计数(2、25 或 28),而绘图面板中的 y 坐标范围从 0 到 1,因此文本从顶部打印出来。

    使用 ddply 计算计数的分数(或 tapply 或其他)。

    graph_avgs <- ddply(
    to_graph,
    .(Teacher),
    summarise,
    Count.Fraction = Count / sum(Count)
    )

    to_graph <- cbind(to_graph, graph_avgs$Count.Fraction)

    你的情节的简化版本。我还没有费心去处理因子订单,所以数字与条形相匹配。
    ggplot(to_graph, aes(Teacher), ordered = TRUE) + 
    geom_bar(aes(y = Count, fill = Level), position = 'fill') +
    scale_fill_manual(values = c("#FF0000", "#FFFF00","#00CC00", "#0000FF")) +
    geom_text(
    aes(y = graph_avgs$Count.Fraction, label = graph_avgs$Count.Fraction),
    size = 3
    )

    关于r - 使用 ggplot2 堆叠条形图标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8243621/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com