我正在尝试使用 ggplot 在 R 中创建折线图
Im trying to create a line graph in R using ggplot
我是 R 和一般编程的新手,我有一个与此类似但行数更多的数据框:
yes_no <- c('Yes','No','No','Yes','Yes','No','No','No','Yes','Yes','No','Yes','No','Yes','No','Yes','No','Yes','No','Yes')
age <- c('1','1','2','3','4','5','1','2','2','3','1','5','5','5','1','4','4','2','5','3')
data<- data.frame(yes_no,age)
我正在尝试使用 ggplot 创建折线图,其中 x 轴是年龄,y 轴是特定年龄的“是”百分比。
我不太确定如何创建百分比
有什么建议吗?谢谢!
data %>%
group_by(age, yes_no) %>%
mutate(k = n()) %>%
ungroup(yes_no) %>%
mutate(n = n(),
p = 100*k/n) %>%
unique() %>%
ungroup() %>%
complete(age, yes_no,
fill = list(k = 0, n = 0, p = 0)) %>%
ggplot(aes(x=age, y =p, group = yes_no, color = yes_no)) +
geom_line() +
ylim(c(0,100))
堆叠条形图的另一种解决方案:
Sample data:
yes_no<-c('Yes','No','No','Yes','Yes','No','No','No','Yes','Yes','No','Yes','No','Yes','No','Yes','No','Yes','No','Yes')
age <- c('1','1','2','3','4','5','1','2','2','3','1','5','5','5','1','4','4','2','5','3')
data<- data.frame(yes_no,age)
绘制剧情:
ggplot(data, aes(x = factor(age), fill = factor(yes_no))) +
geom_bar(position="fill", width = 0.7)+
geom_text(
aes(label=signif(..count.. / tapply(..count.., ..x.., sum)[as.character(..x..)], digits=3)),
stat="count",
position=position_fill(vjust=0.5)) +
labs(x="Age", y="Percentage", title="", fill="")+
theme_bw() +
theme(plot.title = element_text(hjust = 0.5, face="bold", size=20, color="black")) +
theme(axis.title.x = element_text(family="Times", face="bold", size=16, color="black"))+
theme(axis.title.y = element_text(family="Times", face="bold", size=16, color="black"))+
theme(axis.text.x = element_text( hjust = 1, face="bold", size=14, color="black") )+
theme(axis.text.y = element_text( hjust = 1, face="bold", size=14, color="black") )+
theme(plot.title = element_text(hjust = 0.5))+
theme(legend.title = element_text(family="Times", color = "black", size = 16,face="bold"),
legend.text = element_text(family="Times", color = "black", size = 14,face="bold"),
legend.position="bottom",
plot.title = element_text(hjust = 0.5))
结果:
我是 R 和一般编程的新手,我有一个与此类似但行数更多的数据框:
yes_no <- c('Yes','No','No','Yes','Yes','No','No','No','Yes','Yes','No','Yes','No','Yes','No','Yes','No','Yes','No','Yes')
age <- c('1','1','2','3','4','5','1','2','2','3','1','5','5','5','1','4','4','2','5','3')
data<- data.frame(yes_no,age)
我正在尝试使用 ggplot 创建折线图,其中 x 轴是年龄,y 轴是特定年龄的“是”百分比。
我不太确定如何创建百分比
有什么建议吗?谢谢!
data %>%
group_by(age, yes_no) %>%
mutate(k = n()) %>%
ungroup(yes_no) %>%
mutate(n = n(),
p = 100*k/n) %>%
unique() %>%
ungroup() %>%
complete(age, yes_no,
fill = list(k = 0, n = 0, p = 0)) %>%
ggplot(aes(x=age, y =p, group = yes_no, color = yes_no)) +
geom_line() +
ylim(c(0,100))
堆叠条形图的另一种解决方案:
Sample data:
yes_no<-c('Yes','No','No','Yes','Yes','No','No','No','Yes','Yes','No','Yes','No','Yes','No','Yes','No','Yes','No','Yes')
age <- c('1','1','2','3','4','5','1','2','2','3','1','5','5','5','1','4','4','2','5','3')
data<- data.frame(yes_no,age)
绘制剧情:
ggplot(data, aes(x = factor(age), fill = factor(yes_no))) +
geom_bar(position="fill", width = 0.7)+
geom_text(
aes(label=signif(..count.. / tapply(..count.., ..x.., sum)[as.character(..x..)], digits=3)),
stat="count",
position=position_fill(vjust=0.5)) +
labs(x="Age", y="Percentage", title="", fill="")+
theme_bw() +
theme(plot.title = element_text(hjust = 0.5, face="bold", size=20, color="black")) +
theme(axis.title.x = element_text(family="Times", face="bold", size=16, color="black"))+
theme(axis.title.y = element_text(family="Times", face="bold", size=16, color="black"))+
theme(axis.text.x = element_text( hjust = 1, face="bold", size=14, color="black") )+
theme(axis.text.y = element_text( hjust = 1, face="bold", size=14, color="black") )+
theme(plot.title = element_text(hjust = 0.5))+
theme(legend.title = element_text(family="Times", color = "black", size = 16,face="bold"),
legend.text = element_text(family="Times", color = "black", size = 14,face="bold"),
legend.position="bottom",
plot.title = element_text(hjust = 0.5))
结果: