gpt4 book ai didi

r - ggplot - 按*每个系列*(而不是所有数据)的百分比缩放?

转载 作者:行者123 更新时间:2023-12-02 04:26:25 24 4
gpt4 key购买 nike

我正在制作一个条形图来显示一个样本的百分比,该样本被标识为多年来的一组政党列表中的每个政党。没关系。问题是让垂直轴上的百分比计算使用每年的总计数作为百分比计算中的分母(它使用所有年份的总计数作为该分母)。

换句话说,我生成的条形加起来为 100%,但考虑到这代表三年的数据,我希望它们加起来为 300%。每年的样本量各不相同,因此将垂直轴值乘以样本中的年数是行不通的。

ggplot(df.graph, aes(x=Answer, y=..count../sum(..count..), fill=Year)) +
geom_bar(position="dodge")+
scale_y_continuous(labels = function(x) paste0(x*100, "%"))+
theme(axis.text.x=element_text(angle=45,hjust=1))+
xlab(NULL)+
ylab(NULL)

Bar chart (I'm too new to Stack Overflow to post images, apparently)

最佳答案

与其使用默认的 geom_bar(stat = "count"),不如尝试使用 geom_bar(stat = "identity")。您可以使用 dplyr 轻松计算百分比。例如,考虑 ggplot2::mpg 数据,

This dataset contains a subset of the fuel economy data that the EPA makes available on http://fueleconomy.gov. It contains only models which had a new release every year between 1999 and 2008 - this was used as a proxy for the popularity of the car.

-- https://ggplot2.tidyverse.org/reference/mpg.html

ggplot2::mpg %>% select(manufacturer, year)
#> # A tibble: 234 x 2
#> manufacturer year
#> <chr> <int>
#> 1 audi 1999
#> 2 audi 1999
#> 3 audi 2008
#> 4 audi 2008
#> 5 audi 1999
#> 6 audi 1999
#> 7 audi 2008
#> 8 audi 1999
#> 9 audi 1999
#> 10 audi 2008
#> # ... with 224 more rows
  • 制造商:型号名称
  • year: 制造年份

library(tidyverse)

1。百分比与年份

您可以计算每个 制造商 中所占的百分比。换句话说,每个制造商年度百分比总和可能是 1。

此外,您可以使用 scales::percent 代替 labels = function(x) paste0(x*100, "%")

mpg %>% 
group_by(manufacturer) %>%
mutate(N = n()) %>% # number of each manufacturer
group_by(manufacturer, year) %>% # pair of manu, year
summarise(perc = n() / unique(N)) %>% # n() = number of each pair => n()/N = proportion
ggplot() +
aes(x = manufacturer, y = perc, fill = factor(year)) +
geom_bar(position = "dodge", stat = "identity") + # use y as y axis
scale_y_continuous(labels = scales::percent) +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
axis.title = element_blank()) +
labs(fill = "Year")

enter image description here

将每个刻度(红色和蓝色)相加,每个都可以获得 100%。


2。同比百分比

另一方面,您可以计算每个 yearmanufacturer 的比例,以便 每年的总和为 1。。 p>

mpg %>% 
group_by(year) %>%
mutate(N = n()) %>%
group_by(manufacturer, year) %>%
summarise(perc = n() / unique(N)) %>%
ggplot() +
aes(x = manufacturer, y = perc, fill = factor(year)) +
geom_bar(position = "dodge", stat = "identity") +
scale_y_continuous(labels = scales::percent) +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
axis.title = element_blank()) +
labs(fill = "Year")

enter image description here

将每种颜色相加,每一种都可以获得 100%。

关于r - ggplot - 按*每个系列*(而不是所有数据)的百分比缩放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54082640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com