R 给定百分比,如何绘制堆叠条形图?
如何使用ggplot2绘制堆叠条形图 根据下面的数据,我希望x轴和y轴上的年份被视为叠加,以晚_%作为比例 我希望y轴根据给定的百分比填充2种颜色:0.16表示一种颜色占16%,另一种颜色占84%;每年都要用同样的方法 这是我的数据帧:R 给定百分比,如何绘制堆叠条形图?,r,ggplot2,R,Ggplot2,如何使用ggplot2绘制堆叠条形图 根据下面的数据,我希望x轴和y轴上的年份被视为叠加,以晚_%作为比例 我希望y轴根据给定的百分比填充2种颜色:0.16表示一种颜色占16%,另一种颜色占84%;每年都要用同样的方法 这是我的数据帧: year percent 1: 2015 0.16 2: 2016 0.23 3: 2017 0.14 4: 2018 0.64 5: 2019 0.15 6: 2020 0.24 我试过: ggplot(data = myd
year percent
1: 2015 0.16
2: 2016 0.23
3: 2017 0.14
4: 2018 0.64
5: 2019 0.15
6: 2020 0.24
我试过:
ggplot(data = mydata)+
geom_bar(aes(x = year, y = percent),position = 'fill', stat = 'identity')
ggplot
将只打印其中的数据。您希望包含隐含但实际不包含的数据,(百分之一)
。我们将显式地创建它,然后绘图将很容易进行
data %>%
mutate(percent = 1 - percent, type = "not there") %>%
bind_rows(data) %>%
mutate(type = coalesce(type, "there")) %>%
ggplot(aes(x = year, y = percent, fill = type)) +
geom_col() +
scale_y_continuous(labels = scales::percent)
如今,geom_col
比geom_bar(stat='identity')
更受欢迎,并且默认情况下会堆叠
当然,将标签和颜色更改为您想要的任何颜色
使用此示例数据
data = read.table(text = ' year percent
1: 2015 0.16
2: 2016 0.23
3: 2017 0.14
4: 2018 0.64
5: 2019 0.15
6: 2020 0.24', header = T)
您可以向我们展示您迄今为止所做的尝试。填写aes(),然后使用position=position\u stack()堆叠哪些值?在x轴值为
year=2015
时,您有一个y
值percent=0.16
。堆叠条形图的单个x值需要2个或多个y值,通常通过填充
颜色映射来区分。你所有的年份都有一个y值,所以没有什么可叠加的。如果y值更多,还需要第三个变量来区分堆栈中的内容。如上所述,如果每个x轴值有多个变量,“堆叠”是有意义的。但是,看看您的代码,参数position='fill'
在这里没有多大意义。试试这样:ggplot(data=mydata,aes(x=year))+geom_col(aes(y=percent,fill=percent))
@GregorThomas添加您的答案