R語言與醫學統計圖形【3】條形圖、誤差圖


R語言基礎繪圖系統

基礎圖形——條形圖、誤差圖

3.條形圖

barplot接收的數據是矩陣而非數據框。

data <- sample(c(50:80),5)
barplot(data,col=heat.colors(5))
my_matrix <- matrix(data=sample(10:40,9),
                    nrow = 3,
                    dimnames = list(c('A',"B",'C'),
                                    paste('dose',1:3)))
barplot(t(my_matrix),
        beside = T, #是否平行放置,F為堆棧
        col = c('deeppink1','forestgreen','gray'))

更多參數用法。


par(mfrow=c(2,2))
average_gdp <- c(6500,8000,13000,9200)
country <- c('China',"Korea",'Japan',"Singapore")

barplot(average_gdp,
        names.arg = country, #為條柱添加標簽
        horiz = F, #是否水平放置
        width = c(0.5,0.6,0.8,1.0), #條柱寬度
        space = 1.2) #條柱間距

image.png

4.誤差條圖

沒有直接可用的函數來繪制誤差條圖。

# 誤差條圖
set.seed(2017)
data <- data.frame(doseA=rnorm(100,10,2),
                   doseB=rnorm(100,13,5),
                   doseC=rnorm(100,8,3))
data_mean <- apply(data,2,mean)
data_sd <- apply(data,2,sd) #標准差
barcenters <- barplot(data_mean,names.arg = names(data_mean),
                      ylim=c(0,20))
  #存入對象中,保存的是條柱中心位置的橫坐標

#以下兩個都是低級繪圖函數,前4個參數是起始點和終止點坐標
segments(barcenters,data_mean-data_sd,barcenters,
         data_mean+data_sd,lty=1.2)

arrows(barcenters,data_mean-data_sd,
       barcenters,data_mean+data_sd,
       code = 3,angle = 90)#水平箭頭,code兩端都繪制箭頭

image.png

自定義函數來繪制誤差條圖。

#均值和標准差是繪制誤差條的基本元素
A=c(rep('drug A',10),rep('drug B',10))
B=rnorm(20,10,4)
C=rnorm(20,8,3)
D=rnorm(20,5,4)
data=data.frame(A,B,C,D)
colnames(data)=c('treatment','dose_1',"dose_2","dose_3")

#均值計算
bilan=aggregate(cbind(dose_1,dose_2,dose_3)~treatment,
                data = data,mean)
rownames(bilan)=bilan[,1]
bilan=as.matrix(bilan[,-1])
lim=1.2*max(bilan)


#標准差計算
stdev=aggregate(cbind(dose_1,dose_2,dose_3)~treatment,
                data=data,sd)
rownames(stdev)=stdev[,1]
stdev=as.matrix(stdev[,-1])*1.96/10

#定義函數
error.bar <- function(x,y,upper,lower=upper,length=0.1,...){
  arrows(x,y+upper,x,y-lower,angle = 90,code=3,
         length = length,...)
}

ze_barplot <- barplot(bilan,
                      beside = T,
                      #legend.text = T,
                      col = c('blue','skyblue'),
                      ylim = c(0,lim),
                      ylab = 'height')
error.bar(ze_barplot,bilan,stdev)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM