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

时间:2022-05-08
本文章向大家介绍快来给这个图表起个名字吧~,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

我一直觉得,一门语言的学习一定要打牢基础,只有基础足够牢固,后期你无论选择哪个方向才会走的一路顺风。

这是我学习R语言将近一年的深刻体会,当初自己也经历过各种急功近利、自我陶醉的状态,当时没有任何人引导,也没怎么正儿八经的学过一门体系健全的教程,硬生生的一直刷题,就这么一路撑过来来了,也算是勉强越过了第一个瓶颈期,但是过程真的太辛苦。

近来有很多人跟我咨询如何学习R语言,其实个人觉得,在他们心里肯定早就有了答案,只是自己不愿意面对,或者总想从过来人的口中得到一丝安慰而已。

要么用时间去换技能,要么花钱买时间,让别人教你技能,但是两种方法最终结果如何,都是取决于自己的,倘若你连如何安装包、如何加载包、如何更新包这种连百度都知道的东西,都不愿意自己去解决,那么何时才能度过瓶颈期,才能成为熟手,更别提要熟练的运用于工作中。

学习习惯很重要,是否具备自我驱动力,不依靠外力去自助主解决问题,在某种程度上可能决定着你在这门技能上能达到的高度。

我这几个月写的可视化内容确实难度很高,一直担忧这会不会带坏读者的节奏,好像R语言的可视化就应该朝着这种偏怪难的方向发展,而荒废了基础的学习。

我的担忧是对的,确实有很多几乎零基础或者基础很薄弱的小伙伴儿,可能ggplot2函数都没记全,甚至R语言基础都没有看过一个遍,就开始各种复制黏贴,开始跑代码,然后各种问题百出。

还是善意的提醒一下,写这些东西仅仅是我的个人兴趣,我是在用这些图表来不断尝试突破现状,挑战自己的新高度,因为之前个人已经有过将近1年的高强度练习,早已过了瓶颈期。可是对于初学者而言,那些高难度图表的代码对你技能的提升几乎毫无价值,你需要的是按照ggplot2的基础强化学习,融会贯通其体系和理念。

为了给更多R语言可视化爱好者提供少走弯路的机会,最近和天善智能合作,开发了这一期线上课程,时间虽短,但是对于入门而言,极具价值。这门课程也是为今后的高阶课程打基础的。

好了说了这么多,无非就是想要给自己的课程打个广告嘛哈哈哈,接下来当然是继续挑战自我咯~


今天又是一个超级有趣的经济学人图表,名字真不好叫,先把代码撸完,你们爱叫啥叫啥吧~

首先大致分析一下该图表,全是矩形块 ,而且错位排列,柱形图,NO,条形图,NO,因为横纵位置都是错开的。

好像骂一句MMP,这图Economics到底是用撒做的,太无聊了。

不过呢,如果是用ggplot2的话,这图确实难不倒我,思路如下。

用geom_rect图层,还记得之前做过的那个方块面积图嘛,思路如出一辙,我们仅需获取所有矩形块四个角所在位置的点坐标即可。

#构造原始数据
mydata<-data.frame(
China=c(30,8,6,7,14,11,22,3),
SouthKorea=c(15,6,3,5,16,14,19,22)
)

根据以上数据标签构造作图数据。

#China组的矩形数据:
start_xmin<-seq(from=15,by=10,length=8)
end_xmax<-seq(from=45,by=10,length=8)
start_ymin<-cumsum(c(0,mydata[1:7,"China"]))
end_ymax<-cumsum(mydata[,"China"])

以上构造了左侧那组矩形的所有边角坐标点,接下来计算矩形中心 坐标点:

mynewdata<-data.frame(start_xmin,end_xmax,start_ymin,end_ymax)
mynewdata$label_x<-mynewdata$start_xmin+15mynewdata$label_y<-mynewdata$start_ymin+mydata$China/2

构造右侧矩形系列边角坐标点:

start_xmin<-seq(from=115,by=10,length=8)
end_xmax<-seq(from=145,by=10,length=8)
start_ymin<-cumsum(c(0,mydata[1:7,"SouthKorea"]))
end_ymax<-cumsum(mydata[,"SouthKorea"])
#计算中心点位置
data1<-data.frame(start_xmin,end_xmax,start_ymin,end_ymax)
data1$label_x<-data1$start_xmin+15data1$label_y<-data1$start_ymin+mydata$SouthKorea/2

合并左右侧数据

mynewdata<-rbind(mynewdata,data1)
mynewdata$value<-c(mydata$China,mydata$SouthKorea)

构造类别标签(图例填色需要)

label=rep(c("Food,beverages & tobacco","Clothing & footwear","Household & services","Health","Transport & communications","Leisure & education","Housing & household fuels","Others"),2)
mynewdata$label<-label
mynewdata$label<-factor(mynewdata$label,levels=mynewdata$label[1:8],ordered=T)

图形可视化过程

library("ggplot2")
library("grid")
library("showtext")
library("Cairo")
font.add("myfont","msyh.ttc")
setwd("E:/数据可视化/R/R语言学习笔记/数据可视化/ggplot2/优秀R语言案例")

草图预览:

ggplot(mynewdata)+
geom_rect(aes(xmin=start_xmin, xmax =end_xmax, ymin =start_ymin, ymax =end_ymax,fill=label))

采集色板:

palette<-c("#007990","#68C1C7","#EBEBDF","#6DA091","#AAC4B9","#761618","#249BB3","#848587")

最终图形

CairoPNG(file="matirx_scatter.png",width=1200,height=600)
showtext.begin()
ggplot(mynewdata)+
geom_rect(aes(xmin=start_xmin, xmax =end_xmax, ymin =start_ymin, ymax =end_ymax,fill=label))+
geom_text(aes(x=label_x,y=label_y,label=paste0(value,"%")),family="myfont",size=6)+
scale_y_continuous(limits=c(0,110),breaks=seq(0,100,10),label=seq(0,100,10))+
scale_fill_manual(values=palette)+
guides(fill=guide_legend(title=NULL,nrow=2)) +
labs(title="Composition of nominal consumption per head in China and South Korea,2015",
     subtitle="(% of total)",
     caption="Sources:National Bureau of Stistics; The Economist Intelligence Unit.")+
theme_void(base_family="myfont",base_size=20) %+replace%
theme(
      plot.title=element_text(size=25,hjust=0,lineheight=1.2),
      legend.position=c(0.60,.95),
      plot.caption=element_text(hjust=0),
      axis.ticks.y=element_line(),
      axis.ticks.length=unit(0.5,'cm'),
      plot.margin=margin(1,1,1,1,unit="cm"),
      axis.text=element_text(),
      axis.text.x=element_blank(),
)
showtext.end()
dev.off()

哈哈是不是很神奇呀,想不想学这么棒的技能,那就从ggplot2基础开始学起吧,冰冻三尺,非一日之寒,相信假以时日,你也可做的这么棒!