ggplot制作条形图

R语言的一个优势就是在于其强大的制图功能,其中ggplot以强大的制图能力著称,ggplot制图系列我会一直慢慢的写下去,除此之外还会更新GraphPad Prism制图系列。今天来说下,ggplot制作条形图,条形图也叫柱形图,用于显示各项之间的比较情况,常见的有单数据条形图,多数据条形图,堆积条形图,百分比条形图。
今天我们使用SPSS自带的汽车销售数据来演示条形图制作,需要使用tidyverse包
我们先导入数据

library(foreign)
library(tidyverse)  
bc <- read.spss("E:/r/test/tree_car.sav",
                use.value.labels=F, to.data.frame=T)  

在这里插入图片描述
在这里插入图片描述
我们来看下数据,car就是汽车售价,age是年龄,gender是性别,inccat是收入,这里分成4个等级,ed是教育程度,这里分为5个等级.我们处理一下数据,把分类变量转换成因子,然后加上一个标签。

bc$ed<-factor(bc$ed,levels=c(1:5),labels=c("小学","初中","高中","大学","博士"))
bc$inccat<-factor(bc$inccat,levels=c(1:4),labels=c("低收入","中低收入","中等收入","富裕"))
bc$gender<-ifelse(bc$gender=="m",1,0)
bc$gender<-factor(bc$gender,levels = c(0,1),labels=c("女性","男性"))

在这里插入图片描述
假设我们想知道不同教育水平买车在数据中的分布

ggplot(data = bc)+
  geom_bar(mapping = aes(x=ed))

在这里插入图片描述
可以根据类别更改下颜色

ggplot(data = bc)+
  geom_bar(mapping = aes(x=ed,fill=ed))###按类别填充颜色

在这里插入图片描述
假设我们想知道不同教育水平的人购车能力,我们先要求出不同教育水平的顾客平均购车价格

bc1<-group_by(bc,ed,gender)###进行分组
bc2<-summarise(bc1,price=mean(car,na.rm = T))###得出分组摘要

在这里插入图片描述
接下来就可以进一步进行比较,可以看出学历越高,买的车越贵

ggplot(data = bc2,aes(x=ed,y=price))+
  geom_bar(mapping = aes(fill=ed),stat = "identity")###stat是必须的,identity表示位置不变

在这里插入图片描述
可以进一步美化一下

ggplot(data = bc2,aes(x=ed,y=price))+
  geom_bar(mapping = aes(fill=ed),stat = "identity",
           width = 0.8,size=0.25,alpha=0.7)###进行微调整宽度,透明度等

在这里插入图片描述
假如我们想进一步区分这些学历之中男女顾客买车有何不同

ggplot(data = bc2)+
  geom_bar(mapping = aes(x=ed,y=price,fill=gender),stat = "identity",size=0.25,alpha=0.7)

在这里插入图片描述
也可以制作成多数据条形图表示

ggplot(data = bc2)+
  geom_bar(mapping = aes(x=ed,y=price,fill=gender),position="dodge",
           stat = "identity",size=0.25,alpha=0.7)###多数据条形图

在这里插入图片描述
假如我们想知道男女在各个教育水平买车价格的构成比,可以使用堆积条形图,我们先要求出各个类别的总和,再做图
bc3<-summarise(bc1,price1=sum(car,na.rm = T))
在这里插入图片描述

ggplot(data = bc3)+
  geom_bar(mapping = aes(x=ed,y=price1,fill=gender),
           stat = "identity",position ="stack",size=0.25,alpha=0.7,col="black")

在这里插入图片描述
我们也可以以百分比的形式表示,只要改变其中的position =“fill”

ggplot(data = bc3)+
  geom_bar(mapping = aes(x=ed,y=price1,fill=gender),
           stat = "identity",position ="fill",size=0.25,alpha=0.7,col="black")

在这里插入图片描述
也可以把X轴和Y轴对换

ggplot(data = bc3)+
  geom_bar(mapping = aes(x=ed,y=price1,fill=gender),
           stat = "identity",position ="stack",size=0.25,alpha=0.7,col="black")+
  coord_flip()#####X和Y转换

在这里插入图片描述
更多精彩文章请关注公众号:零基础说科研
在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天桥下的卖艺者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值