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