R语言—分组柱状图(iris数据集)

利用鸢尾花数据集,绘制组间显著性差异柱状图。

library(agricolae)
library(reshape2)
library(dplyr)
library(ggplot2)
library(Rmisc)
library(ggtext)

setwd('C:\\Users\\xl\\Desktop\\R')
data("iris")

# 显著性检验
model1 <- lm(Sepal.Length~Species, data=iris)
(HSD.test(model1,'Species'))
model2 <- lm(Sepal.Width~Species,, data=iris)
(HSD.test(model2,'Species'))
model3 <- lm(Petal.Length~Species, data=iris)
(HSD.test(model3,'Species'))
model4 <- lm(Petal.Width~Species,, data=iris)
(HSD.test(model4,'Species'))

# 制作数据集
iris1<-iris[iris$Species == "setosa",c(1:5)]
iris2<-iris[iris$Species == "versicolor",c(1:5)]
iris3<-iris[iris$Species == "virginica",c(1:5)]

iris11 <- melt(iris1, id=c("Species"))
iris21 <- melt(iris2, id=c("Species"))
iris31 <- melt(iris3, id=c("Species"))

iris1_D=summarySE(data=iris11, "value", groupvars="variable", conf.interval = 0.95)  # summarySE()-计算标准差,mutate() 添加新列Species
iris1_D <- iris1_D %>%mutate(Species ="setosa")
iris2_D=summarySE(data=iris21, "value", groupvars="variable", conf.interval = 0.95)
iris2_D <- iris2_D %>%mutate(Species ="versicolor")
iris3_D = summarySE(data=iris31, "value", groupvars="variable", conf.interval = 0.95)
iris3_D <- iris3_D %>%mutate(Species ="virginica")

iris_bind<-rbind(iris1_D, iris2_D, iris3_D)  # rbind:根据行进行合并,合并前提:rbind(a, c)中矩阵a、c的列数必需相符

g <- ggplot(iris_bind,aes(variable,value,fill=Species,group=Species, ymax=8, ymin=0))
g <- g+geom_bar(position="dodge",stat="identity",colour = "black")
g <- g+theme_bw() # 须在修改斜体字之前
g <- g+scale_fill_manual(values=c("black","gray","white"),name="物种 Species",breaks=c("setosa", "versicolor", "virginica"),labels=c("*setosa*", "*versicolor*", "*virginica* "))+theme(plot.title = element_markdown(hjust = 0.5)) +theme(legend.text = element_markdown(size=14)) #scale_fill_manual()-设置填充颜色,**之间为斜体字的代码,尤其是后面两个theme是关键
g <- g+geom_errorbar(aes(ymin=value,ymax=value+sd),width=0,size=0.5,color="black",position=position_dodge(.9))
g <- g+geom_text(aes(y=5.6,x=0.7),label=c("c"),size=6)+geom_text(aes(y=6.7,x=1),label=c("b"),size=6)+geom_text(aes(y=7.5,x=1.3),label=c("a"),size=6)
g <- g+geom_text(aes(y=4.1,x=1.7),label=c("c"),size=6)+geom_text(aes(y=3.4,x=2),label=c("b"),size=6)+geom_text(aes(y=3.6,x=2.3),label=c("a"),size=6)
g <- g+geom_text(aes(y=1.9,x=2.7),label=c("c"),size=6)+geom_text(aes(y=5,x=3),label=c("b"),size=6)+geom_text(aes(y=6.4,x=3.3),label=c("a"),size=6)
g <- g+geom_text(aes(y=0.6,x=3.7),label=c("c"),size=6)+geom_text(aes(y=1.8,x=4),label=c("b"),size=6)+geom_text(aes(y=2.6,x=4.3),label=c("a"),size=6)
g <- g+scale_y_continuous(expand = c(0,0)) # 将柱状图拉到y=0

png('鸢尾花组间差异性检验柱状图.png',,width=600*12,height=12*600,res=72*12)
print(g)

dev.off()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值