如何使用ggplot2绘制蝴蝶图
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,如何使用ggplot2绘制蝴蝶图,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一个小案例,使用ggplot2绘制蝴蝶图,
千家信息网最后更新 2025年02月19日如何使用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安全错误
数据库的锁怎样保障安全
数据库只要作用
番禺区正规网络技术开发公司
数据库学起来怎么样
网络安全法规定县
广科计算机网络技术
服务器文件管理办法
大学班级网络安全教育活动方案
平安互联网AI科技
数据库查询姓名为两个字的学生
数据库生成软件
网站接收服务器管理权限
伟创网络技术有限公司
梦幻西游服务器人多
肇庆服务软件开发定制
微信网络安全内容
java数据库应用程序
服务器月巡检报告
腾讯云服务器过期10天怎么恢复
网络安全知识教育二年级
换塔服务器对应的地区
抖音服务器带宽多少合适
每日学5个知识之网络技术基础
最好的网络技术论坛
病种数据库
nosql数据库的存储单位
关联服务器的网络接口
绝地求生的服务器在哪
重庆网络技术服务
odbc 创建数据库窗体
数据库tempdb作用