bin的geom_histogram scale百分比

时间:2017-04-06 19:33:01

标签: r ggplot2

所以我有这个代码生成一个图表,每个票价都有很多箱子,其中y轴是观察的数量,填充表示我幸存的乘客数量和没有的乘客数量。

ggplot(train, aes(x = Avg.Fare.y, fill = Survived)) +
  geom_histogram(binwidth = 1)

但我真正想要的是一个图表,它可以缩放每个bin,以便我可以看到填充的百分比,而不是计数。所以像这样:Graph

2 个答案:

答案 0 :(得分:1)

虽然@JakeKaupp答案有效,但可以在ggplot之外执行汇总计算的情况下实现结果。以下是使用geom_bar的替代方法(默认情况下使用stat = 'count')和position = 'fill'

library(dplyr) 
library(ggplot2)

plot_data <- titanic::titanic_train %>% 
  mutate(fare_bin = cut(Fare, quantile(Fare), labels = FALSE, include.lowest = TRUE)) 

ggplot(plot_data) +
  geom_bar(aes(x = fare_bin, fill = factor(Survived) ), position = 'fill')

答案 1 :(得分:0)

下次建议:提供您的数据样本,以帮助我们为您提供帮助。

我肯定会在绘图之外总结数据,然后使用geom_col(position = "stack")来实现你想要的效果。

library(dplyr) 
library(ggplot2)

plot_data <- titanic::titanic_train %>% 
  mutate(fare_bin = cut(Fare, quantile(Fare), labels = FALSE, include.lowest = TRUE)) %>% 
  count(Survived, fare_bin) %>% 
  group_by(fare_bin) %>% 
  mutate(percent = n/sum(n)) 

ggplot(plot_data, aes(x = fare_bin, y = percent, fill = factor(Survived))) +
  geom_col(position = "stack")

enter image description here