如何使用R语言绘制散点图结合边际分布图

如何使用R语言绘制散点图结合边际分布图

这篇文章主要为大家展示了“如何使用R语言绘制散点图结合边际分布图”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用R语言绘制散点图结合边际分布图”这篇文章吧。

    主要使用ggExtra结合ggplot2两个R包进行绘制。(胜在简洁方便)使用cowplotggpubr进行绘制。(胜在灵活且美观)

    下面的绘图我们均以iris数据集为例。

    1. 使用ggExtra结合ggplot2

    1)传统散点图

    #librarylibrary(ggplot2)library(ggExtra)#classicplotp<-ggplot(iris)+geom_point(aes(x=Sepal.Length,y=Sepal.Width,color=Species),alpha=0.6,shape=16)+#alpha调整点的透明度;shape调整点的形状theme_bw()+theme(legend.position="bottom")+#图例置于底部labs(x="SepalLength",y="SepalWidth")#添加x,y轴的名称p

    下面我们一行代码添加边际分布(分别以密度曲线与直方图的形式来展现):

    2)密度函数

    #marginalplot:densityggMarginal(p,type="density",groupColour=TRUE,groupFill=TRUE)

    3)直方图

    #marginalplot:histogramggMarginal(p,type="histogram",groupColour=TRUE,groupFill=TRUE)

    4)箱线图(宽窄的显示会有些问题)

    #marginalplot:boxplotggMarginal(p,type="boxplot",groupColour=TRUE,groupFill=TRUE)

    5)小提琴图(会有重叠,不建议使用)

    #marginalplot:violinggMarginal(p,type="violin",groupColour=TRUE,groupFill=TRUE)

    6)密度函数与直方图同时展现

    #marginalplot:densigramggMarginal(p,type="densigram",groupColour=TRUE,groupFill=TRUE)

    2. 使用cowplot与ggpubr

    1)重绘另一种散点图

    #Scatterplotcoloredbygroups("Species")sp<-ggscatter(iris,x="Sepal.Length",y="Sepal.Width",color="Species",palette="jco",size=3,alpha=0.6)+border()+theme(legend.position="bottom")sp

    2)有缝拼接

    ① 密度函数

    library(cowplot)#Marginaldensityplotofx(toppanel)andy(rightpanel)xplot<-ggdensity(iris,"Sepal.Length",fill="Species",palette="jco")yplot<-ggdensity(iris,"Sepal.Width",fill="Species",palette="jco")+rotate()#Cleaningtheplotssp<-sp+rremove("legend")yplot<-yplot+clean_theme()+rremove("legend")xplot<-xplot+clean_theme()+rremove("legend")#Arrangingtheplotusingcowplotplot_grid(xplot,NULL,sp,yplot,ncol=2,align="hv",rel_widths=c(2,1),rel_heights=c(1,2))

    ② 未被压缩的箱线图

    #Marginalboxplotofx(toppanel)andy(rightpanel)xplot<-ggboxplot(iris,x="Species",y="Sepal.Length",color="Species",fill="Species",palette="jco",alpha=0.5,ggtheme=theme_bw())+rotate()yplot<-ggboxplot(iris,x="Species",y="Sepal.Width",color="Species",fill="Species",palette="jco",alpha=0.5,ggtheme=theme_bw())#Cleaningtheplotssp<-sp+rremove("legend")yplot<-yplot+clean_theme()+rremove("legend")xplot<-xplot+clean_theme()+rremove("legend")#Arrangingtheplotusingcowplotplot_grid(xplot,NULL,sp,yplot,ncol=2,align="hv",rel_widths=c(2,1),rel_heights=c(1,2))

    3)无缝拼接

    #Mainplotpmain<-ggplot(iris,aes(x=Sepal.Length,y=Sepal.Width,color=Species))+geom_point()+color_palette("jco")#Marginaldensitiesalongxaxisxdens<-axis_canvas(pmain,axis="x")+geom_density(data=iris,aes(x=Sepal.Length,fill=Species),alpha=0.7,size=0.2)+fill_palette("jco")#Marginaldensitiesalongyaxis#Needtosetcoord_flip=TRUE,ifyouplantousecoord_flip()ydens<-axis_canvas(pmain,axis="y",coord_flip=TRUE)+geom_density(data=iris,aes(x=Sepal.Width,fill=Species),alpha=0.7,size=0.2)+coord_flip()+fill_palette("jco")p1<-insert_xaxis_grob(pmain,xdens,grid::unit(.2,"null"),position="top")p2<-insert_yaxis_grob(p1,ydens,grid::unit(.2,"null"),position="right")ggdraw(p2)

    以上是“如何使用R语言绘制散点图结合边际分布图”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!

    发布于 2022-03-03 21:26:03
    收藏
    分享
    海报
    0 条评论
    79
    上一篇:Docker如何搭建Jenkins并自动化打包部署项目 下一篇:Python编程使用matplotlib挑钻石seaborn画图的示例分析
    目录

      0 条评论

      本站已关闭游客评论,请登录或者注册后再评论吧~

      忘记密码?

      图形验证码