美美的商务范儿——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系列函数的用法。

原文发布于微信公众号 - 数据小魔方(datamofang)

原文发表时间:2017-09-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI研习社

Github 项目推荐 | 一个简单的英文字形转音素的 Python 模块

该功能在语音合成中是必不可少的。不像德语和西班牙语这类语言,英文的发音很难从拼写中推断出来,所以人们要知道某个单词的发音,最好的方式是查阅字典。但是,这种方法至...

1935
来自专栏数据小魔方

R语言可视化——数据地图应用(东三省)

今天是一个案例应用,采用东北三省地图进行离散颜色映射,让大家感受下R语言在地理信息空间可视化方面的强大功能,同时也会对之前强调过的地图配色技巧进行应用。 加载工...

9685
来自专栏算法+

快速高斯模糊算法

刚才发现一份快速高斯模糊的实现。 源地址为:http://incubator.quasimondo.com/processing/gaussian_blur_1...

3834
来自专栏ATYUN订阅号

干货整理:国外150个免费的在线编程和计算机科学课程(2017年9月更新)

本文编制了国外150个免费在线编程和计算机科学课程课程的列表,如果你对此感兴趣,你可以从现在开始学习这些课程。部分课程还包含了它的评分。 ? 这些课程按照难度等...

45810
来自专栏生信小驿站

R for data science (第一章)①Chapter1 使用ggplot2进行数据可视化

本章将教您如何使用ggplot2可视化您的数据。 R有几个用于制作图形的系统,但ggplot2是最优雅和最通用的系统之一。 ggplot2实现了图形语法,它是一...

1132
来自专栏肖洒的博客

梁桥评分系统

虽然算法很简单,就是一个计算器。 但是,其本身逻辑思维很复杂。 就是一个桥它自己的学问,让我们这些门外汉实在是汗颜啊。 所以到最后就是完成了一个很臃肿的exe...

1033
来自专栏iOSDevLog

Turi Create 机器学习模型实战:你也能轻松做出Prisma 风格的图片!

如果你一直有关注Apple去年所发布的消息,就会知道他们在机器学习上投入了大量心力。自他们去年在WWDC 2017上推出Core ML以来,已经有大量结合机器学...

3692
来自专栏iOSDevLog

初探 Core ML:学习建立一个图像识别 App

6947
来自专栏数据魔术师

运筹学教学|运输问题代码分享(C++代码及详细注释)

经过了长时间的学习……小编终于学会了运输问题(Transportation Problem),可以说是很骄傲了!然而……今天老板突然给了小编一个规模巨大的问题去...

5817
来自专栏一心无二用,本人只专注于基础图像算法的实现与优化。

SSE图像算法优化系列五:超高速指数模糊算法的实现和优化(10000*10000在100ms左右实现)。

      今天我们来花点时间再次谈谈一个模糊算法,一个超级简单但是又超级牛逼的算法,无论在效果上还是速度上都可以和Boxblur, stackblur或者是G...

41010

扫码关注云+社区

领取腾讯云代金券