我已经坚持了好几天。我的原始数据包含调查受访者的year
和model
列。我之所以生成最后两列,是因为我认为它们对于创建此图表很有用-尽管下面的示例中未使用它们。
years.data <- years.data %>% mutate(rn = 1:58)
years.data <- years.data %>% mutate(pctprop = rn/58*100)
> head(years.data)
# A tibble: 6 x 4
year model pctprop rn
<int> <chr> <dbl> <int>
1 1937 2 1.72 1
2 1950 1 3.45 2
3 1960 1 5.17 3
4 1969 3 6.90 4
5 1973 2 8.62 5
6 1974 3 10.3 6
我想创建一个堆叠的区域或密度图,以显示整体数据随时间的累积增长(即每行+1),然后使用fill
美学来显示{{1 }},在绘制的面积/密度内。
我已经设法通过几种方式完成了此任务,但是每种方法都略有偏离。
示例1(使用stat_bin的区域):
model
See example 1 此处的y轴未正确缩放。
示例2(使用stat_density的密度):
ggplot(years.data, aes(year, fill = model)) +
stat_bin(
aes(y = ..count.. / sum(..count..)),
geom = "area",
position = "stack",
binwidth = 10
) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
scale_x_continuous(breaks = round(seq(min(1935), max(2020), by = 10),1))
See example 2a, with fill | See example 2b, without fill
看来ggplot(years.data, aes(year)) +
stat_density(aes(y = ..ndensity.., fill = model)) +
scale_x_continuous(breaks = round(seq(min(1935), max(2020), by = 10),1)) +
scale_y_continuous(labels = scales::percent)
正在使y轴膨胀并稍微调整整体形状。我不知道为什么。如果我使用相同的图结构删除fill=model
,则y轴将保持在0到100%之间。
我是否误解了两个示例中的基本转换?