【问题标题】:How to create label on cumulative stacked bar chart and position it如何在累积堆积条形图上创建标签并定位它
【发布时间】:2015-02-26 08:48:48
【问题描述】:

我有一个简单的数据集:

d1 <- c(">2000ppm", ">1000ppm", "<1000ppm", "<450ppm", ">2000ppm", ">1000ppm", "<1000ppm", "<450ppm") 
d2 <- c("S3", "S3", "S3", "S3", "S4", "S4", "S4", "S4") 
d3 <- c(0.0, 16.6, 83.4, 14.4, 0.8, 40.7, 59.3, 13.0)
B <- data.frame(d1,d2,d3)
colnames(B) <- c("Category", "Room", "Value")
View(B)

数值是百分比,>1000ppm和

这是我目前所拥有的:

B$Category <- factor(B$Category, c("<450ppm", "<1000ppm", ">1000ppm", ">2000ppm"))

ggplot(B, aes(x=Room, y=Value, fill=Category)) +
  geom_bar(position="fill", stat="identity") +
  scale_fill_brewer()

我想在条形图上添加标签。我该怎么做..?

>2000ppm的比例包含在>1000ppm中

——而

很难检查我是否正确制作了条形图......

如何为标签构造 geom_text?

我想变化是这样的:看图片上的红色..http://www.bygningsfysik.dk/wp-content/uploads/2015/02/Test-3.png

【问题讨论】:

  • 我已经这样做了......

标签: r ggplot2 bar-chart labels legend-properties


【解决方案1】:

这是一种方法:

library(dplyr)
B %>% 
  group_by(Room) %>% 
  mutate(perc = Value / sum(Value)) %>%
  mutate(pos = cumsum(perc) - (0.5 * perc))  %>%
  ggplot(aes(x=Room, y=perc, fill=Category)) +
    geom_bar(position="fill", stat="identity") +
    scale_fill_brewer() + 
    geom_text(aes(label = sprintf("%.1f", Value), y = pos), colour = "red", size = 4) +
    labs(y = "Value")

(source)

【讨论】:

  • 差不多了(我把颜色改成了黑色..)。这就是我绘制您的代码时的样子...(?!)bygningsfysik.dk/wp-content/uploads/2015/02/Result.png
  • 对不起,我无法重现这个。好像没有按房间分组。
  • 奇怪,我用的是 Win7 64,R 版本 3.1.1,dplyr_0.4.0 & ggplot2_1.0.0。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
  • 2017-02-26
  • 1970-01-01
相关资源
最近更新 更多