假设我有以下数据。我想创建一个条形图,它显示冬天说“1”的比例,“春天”的比例为1,然后是冬季的“2”和春季的“2”。 data example
所以:
x%在冬天说1 x%在春天说1
x%在冬天说2 x%在春天说了2
我到目前为止的图表是chart example。
这个问题是我不希望所有的条加起来都是100.我希望红色(弹簧条)加到100%,绿色(冬天)条加到100。 / p>
因此,冬季和春季的比例不是基于冬季和春季的比例,而是应该单独计算冬季和春季的比例,但是出现在同一张图表上。
到目前为止,这是我的代码:
ggplot(data = a, aes(x = Answer, y = (..count..)/sum(..count..))) +
geom_bar(aes(fill = season), position = "dodge") +
theme_minimal() +
scale_y_continuous(labels=scales::percent,limits= c(0, 1))+
labs (x="%")
问题是:
两个绿色条应增加到100% 两个红色条应该加起来为100%
提前致谢!
答案 0 :(得分:1)
我的方法是直接在data.frame中计算频率,然后绘制:
### example data
a <- data.frame(
Answer = c(1,2,2,1,1,2,1,2,1,2,2,2,1),
season = c("Winter", "Spring", "Spring", "Winter", "Spring", "Winter",
"Spring", "Spring", "Spring", "Spring", "Spring", "Spring", "Winter")
)
library(tidyverse)
a <- a %>% group_by(season, Answer) %>%
summarise(n = n()) %>%
mutate(freq = n/sum(n))
ggplot(data = a, aes(x = Answer, y = freq)) +
geom_bar(aes(fill = season),stat = "identity", position = "dodge") +
theme_minimal() +
scale_y_continuous(labels=scales::percent,limits= c(0, 1))+
labs (y="%")