京公网安备 11010802034615号
经营许可证编号:京B2-20210330
一个案例,告诉你如何灵活的运用ggplot2来制作花样繁多的信息图!
虽然ggplot2的内置图层只有屈指可数的几十个,可是图表组合之后的可能性是无限的。
实际上还是万变不离其宗,就如同使用Excel模仿复杂图表一样,再复杂的图表也是有不同的元素和模块组合起来的,只要能够用心去拆解,都可以找到行之有效的方法。如同庖丁解牛,只要洞悉骨架和经脉,才能随心所欲的下刀。
library("ggplot2")
library("tidyr")
library("dplyr")
library("grid")
library("showtext")
library('"Cairo")
library("scales")
font.add("myfont","msyhl.ttc")
mydata<-read.csv("mydata.csv",stringsAsFactors=FALSE,check.names=FALSE)
mydata$index<-1:nrow(mydata)
mydata$angle1<-1.5*seq(-1,-59)
mydata$angle2<-1.5*seq(59,1)
label<-strsplit(mydata$Country,"")
for (i in 1:length(label)){
label[[i]]<-paste0(label[[i]],collapse="\n")
}
mydata$label<-unlist(label)
mydata$label[37:59]<-gsub("\n","",mydata$label[37:59])
mynewdata<-mydata%>%gather(Class,Value,2:4)
图形一:
mynewdata$Class<-factor(mynewdata$Class,levels=c("环保优先","其他/未回答","经济优先"),order=T)
p1<-ggplot(data=mynewdata,aes(x=index,y=Value,fill=Class))+
geom_bar(stat="identity",width=0.95)+
geom_text(aes(y=105,label=ifelse(index<=36,label,""),angle=angle1),hjust=.5,vjust=0,family="myfont")+
geom_text(aes(y=105,label=ifelse(index>36,label,""),angle=angle2),hjust=0,vjust=0.5,family="myfont")+
geom_text(aes(y=Value,label=Value,angle=angle2),position=position_stack(vjust=.9),family="myfont")+
xlim(0.5,236.5)+ylim(-120,105)+
coord_polar(theta="x")+
guides(fill=guide_legend(title=NULL))+
scale_fill_manual(values=c("#2EA7E0","#B5B5B6","#CBE510"))+
theme(
text=element_text(size=20),
line=element_blank(),
rect=element_blank(),
axis.text=element_blank(),
axis.title=element_blank(),
legend.position=c(.95,.75),
legend.key.size =unit(.8,'cm'),
)
以上可以制作出原始案例的外围圆环图:
mydata2<-data.frame(year=c("1998年","2004年","2009年","2014年"),经济优先=c(.24,.27,.23,.28),未回答=c(.25,.21,.23,.15),环保优先=c(.51,.52,.54,.57),smallyear=rep(.15,4),check.names = FALSE)
names(mydata2)[3]<-"其他/未回答"
mydata2$index<-1:nrow(mydata2)
mynewdata2<-mydata2%>%gather(Class,Value,2:5)
mynewdata2$Class<-factor(mynewdata2$Class,levels=c("smallyear","环保优先","其他/未回答","经济优先"),order=T)
p2<-ggplot(data=mynewdata2,aes(x=index,y=Value,fill=Class))+
geom_bar(stat="identity",width=0.99)+
geom_text(aes(y=Value,label=ifelse(mynewdata2$Class=="smallyear",levels(mynewdata2$year),""),angle=c(rep(0,12),11.25*seq(-1,-7,-2))),position=position_stack(vjust=.5),family="myfont",size=7.5)+
geom_text(aes(y=Value,label=ifelse(mynewdata2$Class!="smallyear",percent(mynewdata2$Value),"")),position=position_stack(vjust=.5),family="myfont",size=6)+
xlim(0.5,16.5)+ylim(-.5,1.25)+
coord_polar(theta="x")+
guides(fill=FALSE)+
scale_fill_manual(values=c("#EFEFEF","#2EA7E0","#B5B5B6","#CBE510"))+
theme(
line=element_blank(),
rect=element_blank(),
axis.text=element_blank(),
axis.title=element_blank(),
legend.position="none"
)
以上可以做出内侧小圆环图:
CairoPNG(file="circletile1.png",width=2000,height=2000)
showtext.begin()
vie<-viewport(width=0.5,height=0.5,x=0.5,y=0.5)
p1;print(p2,vp=vie)
grid.text(label="六成中国人认为\n环境比经济更重要",,x=.99,y=.90,gp=gpar(col="black",fontsize=60,draw=TRUE,just="right")
showtext.end()
dev.off()
合并一步,一幅完整的图表便出炉了!
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
【核心关键词】贷款、报表、课程、专业、建模、缺失值、营销、互联网、银行、办公自动化、数据分析、数据预处理、特征工程、贷 ...
2026-06-05在数据库数据查询、业务报表统计、多表关联分析中,LEFT JOIN左连接是使用率最高的SQL关联查询语句。其核心特性是保留左表全部数 ...
2026-06-05 很多数据分析师能熟练地写SQL、做透视表、算描述性统计,但当被问到“如何预测用户流失概率”“如何归因销量下滑的关键因素 ...
2026-06-05任何一款产品从诞生、普及到最终退出市场,都会遵循一套固定的发展规律,这就是产品生命周期理论。在市场竞争日益激烈、产品迭代 ...
2026-06-04在Excel数据分析、办公统计、业务报表制作场景中,数据透视表是数据汇总、分类统计、快速复盘的核心工具,能够高效完成海量原始 ...
2026-06-04 很多数据分析师拿到数据就开始清洗、建模,但当被问到“这批数据属于什么类型——结构化还是非结构化?分类变量还是数值变量 ...
2026-06-04在问卷调查与社会科学数据分析中,卡方检验是最常用、最基础的非参数检验方法,广泛应用于市场调研、用户分析、行为统计、满意度 ...
2026-06-03【核心关键词】贷款、报表、课程、专业、建模、缺失值、营销、互联网、银行、办公自动化、数据分析、数据预处理、特征工程、贷 ...
2026-06-03 很多数据分析师画过趋势图、做过业绩预测,但当被问到“这个月销售额增长20%,到底是长期趋势自然增长,还是促销活动的短期 ...
2026-06-03逻辑回归是数据分析、机器学习、统计建模中应用最广泛的二分类预测模型,常用于风险判断、行为预测、归因分析等场景。在SPSS、Py ...
2026-06-02数字经济时代,市场竞争日趋同质化,用户消费需求愈发个性化、多元化,传统依托经验、粗放式、广撒网的营销模式弊端日益凸显。长 ...
2026-06-02 很多数据分析师做过按月份的销售额趋势图,画过按天的流量折线图,但当被问到“时间序列和普通数据有什么本质区别”“季节性 ...
2026-06-02在市场竞争日趋饱和、用户需求不断细分的当下,企业创业创新、产品迭代与市场拓展不再依赖经验决策,而是需要系统化、工具化的商 ...
2026-06-01【核心关键词】调度、岗位、数据库、企业、报表、培训、程序、数据分析、数据加工、业务部门、企业数据、调度工具、业务指标、 ...
2026-06-01 很多数据分析师能熟练地计算指标、搭建标签体系,但当被问到“画像到底在解决什么问题”“画像和标签是什么关系”“画像如何 ...
2026-06-01在数据统计分析、数据清洗、异常值识别与数据分布研究中,箱型图是最直观、高效、专业的可视化分析工具。相较于柱状图、折线图仅 ...
2026-05-29Tkinter是Python内置的标准GUI图形界面库,具备无需额外安装、调用简单、兼容性强、轻量化高效等优势,是Python快速开发桌面小程 ...
2026-05-29 很多分析师在设计标签时思路清晰,但真到落地环节却面临“数据在手,不知如何转化为可用标签”的困境:或因加工方式选择不当 ...
2026-05-29【核心关键词】大数据、经理、专业、金融、客户、传统、建模、数据产品、互联网金融、产品经理、数据分析、金融行业、数据模型 ...
2026-05-28 很多分析师每天和数据打交道,但当被问到“标签是什么”“标签和指标有什么区别”“标签体系如何设计”时,却常常答不上来。 ...
2026-05-28