BMI=read.table('/Users/zhangzhishuai/Downloads/33 lesson33 ggplot2散点图(一)/33_ggplot2/BMI.txt', header = T,row.names = 1,sep = '\t')
library(ggplot2)
BMI$name=rownames(BMI)
ggplot(BMI,aes(x=name,y=height)) +
geom_bar(stat = 'identity' # identity:数值,stat:统计
)
# 改变颜色
ggplot(BMI,aes(x=name,y=height)) +
geom_bar(stat = 'identity',fill='lightblue',# 填充色
color='blue' #边框颜色
)
# 改变宽度
ggplot(BMI,aes(x=name,y=height)) +
geom_bar(stat = 'identity',fill='lightblue',
color='blue',
width=0.3 # 改变宽度
)
ggplot(BMI,aes(x=name,y=height, fill=gender)) +
geom_bar(stat = 'identity',
width=0.3 # 改变宽度
)
ggplot(BMI,aes(x=name,y=height, fill=age # 渐变填充
)) +
geom_bar(stat = 'identity',
width=0.3 # 改变宽度
) +
scale_fill_gradient(low = 'yellow',high='red') #渐变填充
# 画出所有特征
library(reshape2)
bmi=melt(BMI[,-3],id='name')
# 堆积柱形图
ggplot(bmi,aes(x=name,y=value,fill=variable)) +
geom_bar(stat = 'identity')
# 并排柱形图
ggplot(bmi,aes(x=name,y=value,fill=variable)) +
geom_bar(stat = 'identity',position = 'dodge' # 并排放的意思
)
# 添加文字
ggplot(BMI,aes(x=name,y=height)) +
geom_bar(stat = 'identity',fill='lightblue') +
geom_text(aes(label = height), # 标签
vjust=-0.8, #垂直微调位置
color='red') +
ylim(0,190) # 设置纵轴高度
ggplot(bmi,aes(x=name,y=value,fill=variable)) +
geom_bar(stat = 'identity',position = 'dodge') +
geom_text(aes(label = round(value,2)),# 保留两位小数
hjust=-0.1, # 水平调
vjust=0.4,
position = position_dodge(0.9), # 调整排列
angle = 90 # 角度
) +
ylim(0,200)
# 添加误差线
average=apply(BMI[,-c(3,6)],2 # 2指按照列处理
,function(x){tapply(x,BMI$gender,mean)})
average1=melt(average)
std = apply(BMI[,-c(3,6)],2 # 2指按照列处理
,function(x){tapply(x,BMI$gender,sd)})
std1=melt(std)
data = cbind(average1,std1$value)
names(data) = c('gender',"feature","mean",'std') #给data设置列名
ggplot(data,aes(x=gender,y=mean,fill=feature)) +
geom_bar(stat = 'identity',position = 'dodge') +
geom_errorbar(aes(ymin=mean-std,ymax=mean+std),width=0.2,
position = position_dodge(0.9)) +
ylim(0,200)
names(data) = c('gender',"feature","mean",'std') #给data设置列名
ggplot(data,aes(x=feature,y=mean,fill=gender)) +
geom_bar(stat = 'identity',position = 'dodge') +
geom_errorbar(aes(ymin=mean-std,ymax=mean+std),width=0.2,
position = position_dodge(0.9)) +
ylim(0,200)
# 只画某一个特征
subdata=subset(data,feature=='height')
ggplot(subdata,aes(x=feature,y=mean,fill=gender)) +
geom_bar(stat = 'identity',position = 'dodge') +
geom_errorbar(aes(ymin=mean-std,ymax=mean+std),width=0.2,
position = position_dodge(0.9)) +
ylim(0,200)
# 画多个特征
subdata=subset(data,feature=='height' | feature=='weight')
ggplot(subdata,aes(x=feature,y=mean,fill=gender)) +
geom_bar(stat = 'identity',position = 'dodge') +
geom_errorbar(aes(ymin=mean-std,ymax=mean+std),width=0.2,
position = position_dodge(0.9)) +
ylim(0,200) +
guides(fill=FALSE) # 删除图注
BMI.txt文章来源地址https://www.toymoban.com/news/detail-597315.html
name height weight gender BMI age
tom 180 75 male 23.14814815 38
cindy 165 58 female 21.30394858 45
jimmy 175 72 male 23.51020408 43
sam 173 68 male 22.72043837 35
lucy 160 60 female 23.4375 32
lily 163 55 female 20.2020202 28
文章来源:https://www.toymoban.com/news/detail-597315.html
到了这里,关于R语言ggplot2——柱形图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!