r 語言快速出圖——單因素方差帶字母顯著性標(biāo)記

相信帶字母的顯著性標(biāo)記圖大家都不會陌生撤摸,在許多文獻(xiàn)中多可以看到類似的圖徽千。首先來看看它長啥樣


用不同的字母來表示顯著性惭等,字母相同不顯著

不管是在月末組會匯報(bào)珍手,還是自己寫文章過程中都會用到。今天就一起來學(xué)一下怎么做辞做。
首先學(xué)一個概念數(shù)據(jù)可視化琳要,

可視化:可視化(Visualization)是利用計(jì)算機(jī)圖形學(xué)和技術(shù),將數(shù)據(jù)轉(zhuǎn)換成圖形或圖像在屏幕上顯示出來凭豪,再進(jìn)行交互處理的理論焙蹭、方法和技術(shù)。

大概意思就是說一圖勝千言嫂伞】桌鳎看看那些好雜志的文章,不得不承認(rèn)人家的圖確實(shí)簡潔好看帖努,言簡意賅撰豺。哎!作圖也是有功力的拼余。多向大佬膜拜膜拜污桦,哈哈哈

回到正題,這類圖該如何做呢匙监!大概有兩種做法:一種是利用統(tǒng)計(jì)軟件(eg:SPSS凡橱、DPS等)先分析得到結(jié)果,再利用其他生物繪圖工具(eg:EXCEL工具)做出柱狀圖,再把字母和誤差線加上添加亭姥;第二種就是利用R語言這類專業(yè)用代碼一鍵出圖稼钩。首先我會先用R語言進(jìn)行單因素方差分析。然后再介紹一款超級簡單的統(tǒng)計(jì)軟件DPS做一遍。

R語言

準(zhǔn)備工作

  • 預(yù)裝R軟件
  • 預(yù)裝R-studio
  • 整理好的數(shù)據(jù)表
    可以用EXCEL表格工具整理好,保存為.txt文件


    數(shù)據(jù)格式:第一列為分組信息打掘,第二列為不同觀測的值盯蝴,若有多列向后加即可。eg:假如還有株高箍鼓、鮮重等指標(biāo)病游。依次加到后面即可

代碼部分

#加載我的工作目錄
setwd("G:/我的堅(jiān)果云/研究生/實(shí)驗(yàn)數(shù)據(jù)")
#讀取數(shù)據(jù)请琳,換成自己的文件名即可
data <- read.table("123.txt",sep="\t",header=TRUE)
#這一句的意思是:將你的分組信息轉(zhuǎn)化為factor侨拦,不然軟件在運(yùn)算過程種識別不了
data$處理 <- as.factor(data$處理)
#查看導(dǎo)入表格中發(fā)病率這一列的數(shù)據(jù)類型
class(data$處理)
#這里出現(xiàn) factor 就可以下一步了
#方差齊性檢驗(yàn)
#法1bartlett.test
nom <- bartlett.test(data$發(fā)病率~data$處理,data = data)
nom
#法2
install.packages("car")
library(car)
nom1<-leveneTest(data1$發(fā)病率~data1$gruop,data = data1)
nom$p.value
#最后兩個的p.value大于0.05 說明方差是齊性殊橙,可以進(jìn)行下一步分析
# 單因素方差分析,整體來看差異顯著
oneway<-aov(data$發(fā)病率~data$處理,data = data)
anova(oneway)
anova(oneway)結(jié)果
#多重比較
# LSD法(Fisher’s Least Significant Difference)
# LSD法檢驗(yàn)處微小的差異狱从,比較方便的是直接得出顯著行標(biāo)記蛀柴,不需人工標(biāo)記
install.packages("agricolae")
library("agricolae")
out <- LSD.test(oneway,"data$處理",p.adj="none")
out
out結(jié)果

嗯,到這分析已經(jīng)結(jié)束了矫夯。下面開始繪制圖形

#整理繪圖需要的表格
mar<-out$groups
rownamemar<-row.names(mar)
newmar<-data.frame(rownamemar,mar$`data$發(fā)病率`,mar$groups)
sort<-newmar[order(newmar$rownamemar),]
# 將groups的數(shù)據(jù)框按列名排序,目的是保持與均值標(biāo)準(zhǔn)差的數(shù)據(jù)一一對應(yīng)
rowname<-row.names(out$means)
mean<-out$means[,1]
sd<-out$means[,2]
marker<-sort$mar.groups
plotdata<-data.frame(rowname,mean,sd,marker)
plotdata
plotdata結(jié)果
install.packages("ggplot2")
library("ggplot2")
p1<-ggplot(plotdata,aes(x=factor(rowname),y=mean))+geom_bar(position=position_dodge(0.6),width = 0.5,stat = "identity")
p1
p2<-p1+geom_errorbar(aes(ymin=mean-sd,ymax=mean+sd),position=position_dodge(0.6),width=0.2)
p3<-p2+geom_text(aes(x=factor(rowname),y=mean+sd+2.0,label=marker),size=3,position= position_dodge(0.6))
p3
p4<-p3+xlab("")+ylab("發(fā)病率(%)")
p4
p5<-p4+coord_cartesian(ylim= c(0,100),expand = FALSE)
p5
#發(fā)現(xiàn)沒有g(shù)gplot2的作圖方式挺好玩的吊洼,就像玩俄羅斯方塊一樣训貌,一層一層往上加,
#更改y軸顯示范圍冒窍,這里的expand默認(rèn)為TRUE
mytheme<-theme_bw()+theme(axis.title =element_text(size = 12),
                          axis.text =element_text(size=12),
                          panel.grid.major =element_line(color ="white"),
                          panel.grid.minor =element_line(colour = "white"),
                          axis.text.x =element_text(size = 12,angle=0,vjust=0,hjust=0,color = "black"),
                          axis.text.y =element_text(size = 12,color ="black"),)
p5+mytheme
coord_cartesian(ylim = c(0,60),expand =FALSE)的expand改為TRUE递沪。
ggsave("發(fā)病率.pdf", width = 10, height= 10, units = "cm")
end
最后結(jié)果圖

有了這套代碼,小伙伴就可以根據(jù)自己的需要僅更改幾個地方就可以完成分析了综液。

如何根據(jù)自己的需要改呢

還是用上面的數(shù)據(jù)款慨。比如我現(xiàn)先還要做病情指數(shù)的分析

setwd("G:/我的堅(jiān)果云/研究生/實(shí)驗(yàn)數(shù)據(jù)")
data <- read.table("123.txt",sep="\t",header=TRUE)
data$處理 <- as.factor(data$處理)
class(data$處理)
#方差齊性檢驗(yàn)
#法1bartlett.test
nom <- bartlett.test(data$病情指數(shù)~data$處理,data = data)
nom
#法2
install.packages("car")
library(car)
nom1<-leveneTest(data$病情指數(shù)~data1$gruop,data = data1)
nom$p.value
#nom$p.value大于0.05 說明方差是齊性
# 單因素方差分析,整體來看差異顯著
oneway<-aov(data$病情指數(shù)~data$處理,data = data)
anova(oneway)
#多重比較
# LSD法(Fisher’s Least Significant Difference)
# LSD法檢驗(yàn)處微小的差異谬莹,比較方便的是直接得出顯著行標(biāo)記檩奠,不需人工標(biāo)記
install.packages("agricolae")
library("agricolae")
out <- LSD.test(oneway,"data$處理",p.adj="none")
out
mar<-out$groups
rownamemar<-row.names(mar)
newmar<-data.frame(rownamemar,mar$`data$病情指數(shù)`,mar$groups)
sort<-newmar[order(newmar$rownamemar),]
# 將groups的數(shù)據(jù)框按列名排序,目的是保持與均值標(biāo)準(zhǔn)差的數(shù)據(jù)一一對應(yīng)
rowname<-row.names(out$means)
mean<-out$means[,1]
sd<-out$means[,2]
marker<-sort$mar.groups
plotdata<-data.frame(rowname,mean,sd,marker)
plotdata
#可視化作圖
install.packages("ggplot2")
library("ggplot2")
p1<-ggplot(plotdata,aes(x=factor(rowname),y=mean))+geom_bar(position=position_dodge(0.6),width = 0.5,stat = "identity")
p1
p2<-p1+geom_errorbar(aes(ymin=mean-sd,ymax=mean+sd),position=position_dodge(0.6),width=0.2)
p3<-p2+geom_text(aes(x=factor(rowname),y=mean+sd+2.0,label=marker),size=3,position= position_dodge(0.6))
p3
p4<-p3+xlab("")+ylab("病情指數(shù)")
p4
p5<-p4+coord_cartesian(ylim= c(0,100),expand = FALSE)
p5
#更改y軸顯示范圍附帽,這里的expand默認(rèn)為TRUE
mytheme<-theme_bw()+theme(axis.title =element_text(size = 12),
                          axis.text =element_text(size=12),
                          panel.grid.major =element_line(color ="white"),
                          panel.grid.minor =element_line(colour = "white"),
                          axis.text.x =element_text(size = 12,angle=0,vjust=0,hjust=0,color = "black"),
                          axis.text.y =element_text(size = 12,color ="black"),)
p5+mytheme
結(jié)果

這里發(fā)現(xiàn)Y范圍范圍太大埠戳,可以將p5<-p4+coord_cartesian(ylim= c(0,100),expand = FALSE)括號里的參數(shù)改為50
可以看我主要改了哪里,然后對應(yīng)的改為自己的數(shù)據(jù)即可蕉扮。
其實(shí)R語言沒有想象中那么難整胃。這話從一個學(xué)了兩個月新手嘴里說出,是有點(diǎn)“飄”了喳钟,用老家的方言說就是“你太刨了”屁使。我知道可能會被打,新手上路奔则,多多包涵蛮寂。
有時(shí)候知道這行代碼什么意思就可以了,用的時(shí)候搜別人寫過的代碼套自己的就可以了应狱。這套代碼我也是網(wǎng)上搬過來的共郭,然后花了一個下午把它搞明白。搞明白之后最大的好處就是,一分鐘內(nèi)我就可以做出一張漂亮的單因素方差分析圖除嘹。也算值了

用DPS做方差分析

將excel表格中數(shù)據(jù)復(fù)制粘貼過來就可以了

數(shù)據(jù)格式:第一列為分組信息写半;后面為重復(fù)1、重復(fù)2尉咕、重復(fù)3

比較麻煩的是叠蝇,在excel中習(xí)慣一般都是用列來表示重復(fù),DPS不一樣恰好相反年缎,可以在excel先復(fù)制悔捶,粘貼時(shí)選擇轉(zhuǎn)置,在粘貼到DPS中单芜。

粘貼好數(shù)據(jù)后蜕该,選擇試驗(yàn)統(tǒng)計(jì)——完全隨機(jī)設(shè)計(jì)——單因素實(shí)驗(yàn)統(tǒng)計(jì)分析——選擇兩兩比較的方法,可以指第一列的名稱洲鸠,也可以不指定堂淡。

結(jié)果如圖

根據(jù)上述結(jié)果,用excel繪制柱型圖扒腕,添加誤差線绢淀,顯著性字母。

具體方法自行百度瘾腰,
之所以選擇學(xué)R語言皆的,就是因?yàn)槲覒校湫头收E瑁髅骺梢杂密浖鉀Q的事费薄,為啥在那里死磕呢?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怪嫌,一起剝皮案震驚了整個濱河市义锥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌岩灭,老刑警劉巖拌倍,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異噪径,居然都是意外死亡柱恤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門找爱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梗顺,“玉大人,你說我怎么就攤上這事车摄∷掳” “怎么了仑鸥?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長变屁。 經(jīng)常有香客問我眼俊,道長,這世上最難降的妖魔是什么粟关? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任疮胖,我火速辦了婚禮,結(jié)果婚禮上闷板,老公的妹妹穿的比我還像新娘澎灸。我一直安慰自己,他們只是感情好遮晚,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布性昭。 她就那樣靜靜地躺著,像睡著了一般县遣。 火紅的嫁衣襯著肌膚如雪巩梢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天艺玲,我揣著相機(jī)與錄音,去河邊找鬼鞠抑。 笑死饭聚,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的搁拙。 我是一名探鬼主播秒梳,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼箕速!你這毒婦竟也來了酪碘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤盐茎,失蹤者是張志新(化名)和其女友劉穎兴垦,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體字柠,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡探越,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了窑业。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钦幔。...
    茶點(diǎn)故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖常柄,靈堂內(nèi)的尸體忽然破棺而出鲤氢,到底是詐尸還是另有隱情搀擂,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布卷玉,位于F島的核電站哨颂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏揍庄。R本人自食惡果不足惜咆蒿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蚂子。 院中可真熱鬧沃测,春花似錦、人聲如沸食茎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽别渔。三九已至附迷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哎媚,已是汗流浹背喇伯。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拨与,地道東北人稻据。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像买喧,于是被迫代替她去往敵國和親捻悯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容