千家信息网

如何使用ggplot2绘制蝴蝶图

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,如何使用ggplot2绘制蝴蝶图,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一个小案例,使用ggplot2绘制蝴蝶图,
千家信息网最后更新 2026年11月03日如何使用ggplot2绘制蝴蝶图

如何使用ggplot2绘制蝴蝶图,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

一个小案例,使用ggplot2绘制蝴蝶图,在巩固温习条形图坐标轴翻转的同时,重新熟悉一下如何利用grid系统进行版式布局。

原图如下:

该图表思路很简单,就是两个条形图通过坐标轴翻转,使用grid包中的版式布局函数进行合理的版式拼接即可。

以下是整个案例代码部分,因为涉及到的知识点不复杂,这里不做详细注释:

第一部分:制作右侧的柱形图:

#导入工具包:
library("ggplot2")
library("dplyr")
library("grid")
library("showtext")
library("Cairo")font.add("myfont","msyh.ttc")
#生成图形所需数据集:
mydata<-data.frame(id=1:14,A=c(5.0,14.7,2.5,8.5,5.1,6.9,7.7,6.8,4.4,4.9,5.3,1.0,0.9,7.8),B=c(31.3,24.7,17.8,17.2,15.3,14.3,13.9,13.9,12.4,10.0,6.5,4.2,2.5,0.9),Label=c("Website","Customer & Employee Referral","Webinar","Facebook/Twitter/Other Social","Marketting & Advertising","Paid Serch","Other","Sales generated","Tradeshows","Parter","Linkedin","Events","Lead list","Emial Campaign"))
p1<-ggplot(mydata)+geom_hline(yintercept=mean(mydata$A),linetype=2,size=.25,colour="grey")+geom_bar(aes(x=id,y=A),stat="identity",fill="#E2BB1E",colour=NA)+ylim(-5.5,16)+scale_x_reverse()+geom_text(aes(x=id,y=-4,label=Label),vjust=.5)+geom_text(aes(x=id,y=A+.75,label=paste0(A,"%")),size=4.5,family="myfont",fontface="bold")+coord_flip()+theme_void();p1
#图一:

第二部:制作左侧柱形图:

p2<-ggplot(mydata)+geom_hline(yintercept=-mean(mydata$B),linetype=2,size=.25,colour="grey")+geom_bar(aes(x=id,y=-B),stat="identity",fill="#C44E4C",colour=NA)+ylim(-40,0)+scale_x_reverse()+geom_text(aes(x=id,y=-B-1.75,label=paste0(B,"%")),size=4.5,family="myfont",fontface="bold")+coord_flip()+theme_void();p2
#图二效果

图形整合:

setwd("E:/数据可视化/R/R语言学习笔记/数据可视化/ggplot2/优秀R语言案例")CairoPNG(file="butterfly.png",width=1200,height=696)showtext.begin()grid.newpage()pushViewport(viewport(layout=grid.layout(7,11)))vplayout<-function(x,y){viewport(layout.pos.row =x,layout.pos.col=y)}print(p2,vp=vplayout(2:7,1:5))print(p1,vp=vplayout(2:7,6:11))grid.text(label="Opportunity-to-Deal\nConversion Rate",x=.80,y=.88,gp=gpar(col="black",fontsize=15,fontfamily="myfzhzh",draw=TRUE,just="centre"))grid.text(label="Lead-to-Opportunity\nConversion Rate",x=.20,y=.88,gp=gpar(col="black",fontsize=15,fontfamily="myfzhzh",draw=TRUE,just="centre"))grid.text(label="Webinars convert opportunities,but don't close",x=.50,y=.95,gp=gpar(col="black",fontsize=20,fontfamily="myfzhzh",draw=TRUE,just="centre"))showtext.end()dev.off()

注意以上代码中所使用的coord_flip函数、geom_text函数以及最后的grid系列函数的用法。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

函数 数据 案例 版式 蝴蝶 代码 图形 坐标 坐标轴 布局 条形 知识 语言 制作 可视化 学习 帮助 优秀 复杂 清楚 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网佳科技有限公司 互联网科技公司的优势 互联网品科技 易互联网科技有限公司 互联网科技的未来发展 深圳期待互联网科技 江苏南京365互联网科技 天速互联网络科技有限公司 健康食品互联网创新科技园项目 乌苏新华互联网科技做什么的 中国科技创新与世界互联网大会 元气玛特互联网科技公司是外包吗 锡山区互联网智能科技产品供应 互联网金融科技公司的优势 上海同邻互联网科技有限公司规模 广州智享互联网科技 北京互联网科技类企业分布 科技互联网公司两年变化 互联网科技的前景 互联网对科技影响 互联网科技海报 天津市摩尔互联网科技 哈尔滨大商圈互联网科技有限公司 互联网科技有限公司经营范围 壕鑫互联网络科技 海南科技产业互联网平台 互联网为啥属于高科技 互联网硬科技公司 世界互联网科技成果奖 小牛互联网科技有限公司地址
0