用计算机图形学画字母,r 语言快速出图——单因素方差带字母显著性标记
相信帶字母的顯著性標記圖大家都不會陌生,在許多文獻中多可以看到類似的圖。首先來看看它長啥樣
用不同的字母來表示顯著性,字母相同不顯著
不管是在月末組會匯報,還是自己寫文章過程中都會用到。今天就一起來學一下怎么做。
首先學一個概念數據可視化,
可視化:可視化(Visualization)是利用計算機圖形學和技術,將數據轉換成圖形或圖像在屏幕上顯示出來,再進行交互處理的理論、方法和技術。
大概意思就是說一圖勝千言。看看那些好雜志的文章,不得不承認人家的圖確實簡潔好看,言簡意賅。哎!作圖也是有功力的。多向大佬膜拜膜拜,哈哈哈
回到正題,這類圖該如何做呢!大概有兩種做法:一種是利用統計軟件(eg:SPSS、DPS等)先分析得到結果,再利用其他生物繪圖工具(eg:EXCEL工具)做出柱狀圖,再把字母和誤差線加上添加;第二種就是利用R語言這類專業用代碼一鍵出圖。首先我會先用R語言進行單因素方差分析。然后再介紹一款超級簡單的統計軟件DPS做一遍。
R語言
準備工作
預裝R軟件
預裝R-studio
整理好的數據表
可以用EXCEL表格工具整理好,保存為.txt文件
數據格式:第一列為分組信息,第二列為不同觀測的值,若有多列向后加即可。eg:假如還有株高、鮮重等指標。依次加到后面即可
代碼部分
#加載我的工作目錄
setwd("G:/我的堅果云/研究生/實驗數據")
#讀取數據,換成自己的文件名即可
data
#這一句的意思是:將你的分組信息轉化為factor,不然軟件在運算過程種識別不了
data$處理
#查看導入表格中發病率這一列的數據類型
class(data$處理)
#這里出現 factor 就可以下一步了
#方差齊性檢驗
#法1bartlett.test
nom
nom
#法2
install.packages("car")
library(car)
nom1
nom$p.value
#最后兩個的p.value大于0.05 說明方差是齊性,可以進行下一步分析
# 單因素方差分析,整體來看差異顯著
oneway
anova(oneway)
anova(oneway)結果
#多重比較
# LSD法(Fisher’s Least Significant Difference)
# LSD法檢驗處微小的差異,比較方便的是直接得出顯著行標記,不需人工標記
install.packages("agricolae")
library("agricolae")
out
out
out結果
嗯,到這分析已經結束了。下面開始繪制圖形
#整理繪圖需要的表格
mar
rownamemar
newmar
sort
# 將groups的數據框按列名排序,目的是保持與均值標準差的數據一一對應
rowname
mean
sd
marker
plotdata
plotdata
plotdata結果
install.packages("ggplot2")
library("ggplot2")
p1
p1
p2
p3
p3
p4
p4
p5
p5
#發現沒有ggplot2的作圖方式挺好玩的,就像玩俄羅斯方塊一樣,一層一層往上加,
#更改y軸顯示范圍,這里的expand默認為TRUE
mytheme
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("發病率.pdf", width = 10, height= 10, units = "cm")
end
最后結果圖
有了這套代碼,小伙伴就可以根據自己的需要僅更改幾個地方就可以完成分析了。
如何根據自己的需要改呢
還是用上面的數據。比如我現先還要做病情指數的分析
setwd("G:/我的堅果云/研究生/實驗數據")
data
data$處理
class(data$處理)
#方差齊性檢驗
#法1bartlett.test
nom
nom
#法2
install.packages("car")
library(car)
nom1
nom$p.value
#nom$p.value大于0.05 說明方差是齊性
# 單因素方差分析,整體來看差異顯著
oneway
anova(oneway)
#多重比較
# LSD法(Fisher’s Least Significant Difference)
# LSD法檢驗處微小的差異,比較方便的是直接得出顯著行標記,不需人工標記
install.packages("agricolae")
library("agricolae")
out
out
mar
rownamemar
newmar
sort
# 將groups的數據框按列名排序,目的是保持與均值標準差的數據一一對應
rowname
mean
sd
marker
plotdata
plotdata
#可視化作圖
install.packages("ggplot2")
library("ggplot2")
p1
p1
p2
p3
p3
p4
p4
p5
p5
#更改y軸顯示范圍,這里的expand默認為TRUE
mytheme
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
結果
這里發現Y范圍范圍太大,可以將p5
可以看我主要改了哪里,然后對應的改為自己的數據即可。
其實R語言沒有想象中那么難。這話從一個學了兩個月新手嘴里說出,是有點“飄”了,用老家的方言說就是“你太刨了”。我知道可能會被打,新手上路,多多包涵。
有時候知道這行代碼什么意思就可以了,用的時候搜別人寫過的代碼套自己的就可以了。這套代碼我也是網上搬過來的,然后花了一個下午把它搞明白。搞明白之后最大的好處就是,一分鐘內我就可以做出一張漂亮的單因素方差分析圖。也算值了
用DPS做方差分析
將excel表格中數據復制粘貼過來就可以了
數據格式:第一列為分組信息;后面為重復1、重復2、重復3
比較麻煩的是,在excel中習慣一般都是用列來表示重復,DPS不一樣恰好相反,可以在excel先復制,粘貼時選擇轉置,在粘貼到DPS中。
粘貼好數據后,選擇試驗統計——完全隨機設計——單因素實驗統計分析——選擇兩兩比較的方法,可以指第一列的名稱,也可以不指定。
結果如圖
根據上述結果,用excel繪制柱型圖,添加誤差線,顯著性字母。
具體方法自行百度,
之所以選擇學R語言,就是因為我懶,典型肥宅,明明可以用軟件解決的事,為啥在那里死磕呢?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的用计算机图形学画字母,r 语言快速出图——单因素方差带字母显著性标记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么行车记录仪有的没有记录?
- 下一篇: 水泥地面上有轮胎印怎么处理?