所以我有这个代码生成一个图表,每个票价都有很多箱子,其中y轴是观察的数量,填充表示我幸存的乘客数量和没有的乘客数量。
ggplot(train, aes(x = Avg.Fare.y, fill = Survived)) +
geom_histogram(binwidth = 1)
但我真正想要的是一个图表,它可以缩放每个bin,以便我可以看到填充的百分比,而不是计数。所以像这样:Graph
答案 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")