R仿圖:boxplot()仿照geom_boxplot()


  最近在學R的繪圖,打算用R語言的boxplot()仿畫geom_boxplot(),仿畫源頭見網址:https://www.r-graph-gallery.com/89-box-and-scatter-plot-with-ggplot2.html

這是一個優秀的R可視化網站,網站里給出了每幅圖的代碼。

  生成數據:

data <- data.frame(
  name=c( rep("A",500), rep("B",500), rep("B",500), rep("C",20), rep('D', 100)  ),
  value=c( rnorm(500, 10, 5), rnorm(500, 13, 1), rnorm(500, 18, 1), rnorm(20, 25, 4), rnorm(100, 12, 1) )
)

 

  先放ggplot2包畫的:

library(ggplot2)
library(scales) ggplot(data,aes(x=name,y=value))+ geom_boxplot(aes(fill=name))+ scale_fill_manual( values=c(alpha("purple",0.5),alpha("green",0.5), alpha("blue",0.5),alpha("yellow",0.5)))+ geom_jitter(colour="black",size=0.4,alpha=0.5)+ labs(title="A boxplot with jitter",x="",y="value")+ theme( legend.position="none", axis.title.y=element_text(hjust=1), plot.title=element_text(size=11), panel.background=element_rect(fill="white"), panel.grid.major.y=element_line(colour="gray",linetype="dotted"), panel.grid.minor.y=element_line(colour="gray",linetype="dotted") )

 

圖形如下:

  

 

  再來Base plot畫的:

plot.new()
with(data,{
boxplot(value~name,ann=FALSE,axes=FALSE,
        col=c(scales::alpha("purple",0.5),scales::alpha("green",0.5),
              scales::alpha("blue",0.5),scales::alpha("yellow",0.5)))#繪制箱圖,ann參數控制是否顯示標題和標簽,axes參數控制是否繪制坐標軸
points(x=jitter(rep(1:4,times=c(500,1000,20,100)),amount=0.5),
       y=unlist(split(value,name)),
       cex=0.1,pch=16)
})#加入反映數據的擾動散點                            
axis(2,at=seq(-5,30,5),labels=c("","0","","10","","20","","30"))#繪制y軸
axis(1,at=1:4,labels=c("A","B","C","D"))#繪制x軸
abline(h=seq(-5,30,5),lty="dotted",col="gray")#繪制x軸方向的網格線
mtext(text="A boxplot with jitter",side=3,adj=0)
mtext(text="value",side=2,adj=1,line=3)

 

圖形如下:

  仿得還是挺像的!

 


免責聲明!

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



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