专栏名称: EasyCharts
EasyCharts,易图表,我们将定期推送各种数据可视化与分析教程,包括Excel(Power BI)、Origin、Sigmaplot、GraphPad、R、Python、Matlab、Tableau、D3.js等。
目录
相关文章推荐
大力如山  ·  你以为的人生和你正在过的人生? ·  2 天前  
前端早读课  ·  【第3434期】VSCode 推出 ... ·  2 天前  
格斗迷  ·  格斗高手鬼屋受惊!一腿踢断NPC下巴 ·  3 天前  
太星小升初  ·  人大附中教育集团扩军了 ·  4 天前  
前端大全  ·  利用Chrome浏览器使用Overrides ... ·  5 天前  
51好读  ›  专栏  ›  EasyCharts

R语言之仿经济学人:矩阵气泡图

EasyCharts  · 公众号  · 前端  · 2017-09-30 10:02

正文

本篇文章案例来源于经济学人2013年一幅关于家庭支出结构与国家间的交叉对比图。

该图信息量相当丰富,至少涵盖了四个维度的信息,支出结构信息(类别型字段)、国别信息(类别型字段)、支出水平分类(类别型字段)、支出规模(数值型指标)等。

倘若使用ggplot进行绘制,思路非常简单,仅通过散点图层皆可完成,ggplot2的散点图可以支持离散标度,但是如果想要处理好类别的顺序,需要把类别型变量因子化。

因为原图中有奖金100+数据点,很多都没有具体数值,一个一个用肉眼估计简直丧心病狂,所以我模拟了一组数值,只保证思路讲到位就OK。

setwd("E:/微信公众号/公众号——数据小魔方/2017年9月/20170914/")
mydata"matrix_bubble.csv",stringsAsFactors = FALSE,check.names = FALSE)

原始数据中带有\n,导入时R语言会自动给\添加一个\,这里涉及到R语言中保留字符的问题,需要将多余的\删掉。

mydata$Class[c(1,6,7)]"Housing,fuel\n&utilities","Restaurants\n& hotels","Clothing\n& footwear")
names(mydata)[9:11]"Saudi\nArabia","South\nKorea","United\nStates")library("tidyr")
mydata11)
mydata1$Class"Education","Alcohol & tobacco","Communications","Furnishings","Clothing\n& footwear","Restaurants\n& hotels","Health","Recreation","Transport","Food","Housing,fuel\n&utilities"),ordered=T)

分割支出规模的类别区间:

qa0,.25,.5,.75,1))
mydata1$Spend_fact"lowest spend","below average","above average","highest spend"),include.lowest=TRUE,ordered=T)



制作草图:

library("ggplot2")library("grid")library("showtext")library("Cairo")
font.add("myfont","msyh.ttc")
setwd("E:/《R语言商务图表与可视化》/9.12——R语言ggplot2可视化在线分享")
CairoPNG(file="matirx_scatter.png",width=1200,height=900)
showtext.begin()
ggplot(data=mydata1)+

geom_hline(aes(x=Country,y=Class,yintercept = 1:nrow(mydata1)),size=20,colour="#E4EDF2",alpha=.5)+
geom_vline(aes(x=Country,y=Class,xintercept = 1:nrow(mydata1)),linetype="dashed")+
geom_point(aes(x=Country,y=Class,size=Spend,fill=Spend_fact),shape=21,colour="white")+
scale_fill_manual(values=c("#F9DBD3","#F1B255","#519F46","#41B0C3"))+
scale_size_area(max_size=25)+
scale_x_discrete(position = "top")+
guides(size=FALSE,fill=guide_legend(title="Within category",direction="horizontal"))+
labs(title="How they spend it",subtitle="Househlod spending*,of total,2013 or latest,includes taxes",caption="Source:Eurostat")+
theme_void(base_size=20,base_family="myfont") %+replace%
theme(
      legend.position="top",
      panel.grid.major.x=element_line(linetype="dashed"),      #plot.margin=margin(5,5,5,5,unit="pt"),
      axis.text=element_text(size=15,hjust=0.5),
      plot.title=element_text(size=35,hjust=0,lineheight=1.2),
      plot.caption=element_text(hjust=0,lineheight=1.2)
) 
showtext.end()
dev.off()

最近刚刚上线的新课程,R语言(ggplot2入门)可视化在商务场景中的应用,已经有180+小伙伴儿加入了,感兴趣的可以点击阅读原文报名参加哦,满满的干货!

数据源请移步GitHub主页下载:
https://github.com/ljtyduyu/DataWarehouse/tree/master/File


高维分面应用:ggplot2分面气泡图饼图

ggplot2玫瑰图案例:星巴克门店分布图

用ggplot2画了一个我也叫不上名的炫酷图表

构造方块条形图

多维放射状流向图的最佳布局方案

快来给这个图表起个名字吧~


如需转载请联系EasyCharts团队!

微信后台回复“转载”即可!



【书籍推荐】《Excel 数据之美--科学图表与商业图表的绘制》

【必备插件】  EasyCharts -- Excel图表插件

【网易云课堂】  Excel 商业图表修炼秘笈之基础篇

【手册获取】国内首款-数据可视化参考手册:专业绘图必备