我一直觉得,一门语言的学习一定要打牢基础,只有基础足够牢固,后期你无论选择哪个方向才会走的一路顺风。
这是我学习R语言将近一年的深刻体会,当初自己也经历过各种急功近利、自我陶醉的状态,当时没有任何人引导,也没怎么正儿八经的学过一门体系健全的教程,硬生生的一直刷题,就这么一路撑过来来了,也算是勉强越过了第一个瓶颈期,但是过程真的太辛苦。
近来有很多人跟我咨询如何学习R语言,其实个人觉得,在他们心里肯定早就有了答案,只是自己不愿意面对,或者总想从过来人的口中得到一丝安慰而已。
要么用时间去换技能,要么花钱买时间,让别人教你技能,但是两种方法最终结果如何,都是取决于自己的,倘若你连如何安装包、如何加载包、如何更新包这种连百度都知道的东西,都不愿意自己去解决,那么何时才能度过瓶颈期,才能成为熟手,更别提要熟练的运用于工作中。
学习习惯很重要,是否具备自我驱动力,不依靠外力去自助主解决问题,在某种程度上可能决定着你在这门技能上能达到的高度。
我这几个月写的可视化内容确实难度很高,一直担忧这会不会带坏读者的节奏,好像R语言的可视化就应该朝着这种偏怪难的方向发展,而荒废了基础的学习。
我的担忧是对的,确实有很多几乎零基础或者基础很薄弱的小伙伴儿,可能ggplot2函数都没记全,甚至R语言基础都没有看过一个遍,就开始各种复制黏贴,开始跑代码,然后各种问题百出。
还是善意的提醒一下,写这些东西仅仅是我的个人兴趣,我是在用这些图表来不断尝试突破现状,挑战自己的新高度,因为之前个人已经有过将近1年的高强度练习,早已过了瓶颈期。可是对于初学者而言,那些高难度图表的代码对你技能的提升几乎毫无价值,你需要的是按照ggplot2的基础强化学习,融会贯通其体系和理念。
为了给更多R语言可视化爱好者提供少走弯路的机会,最近和天善智能合作,开发了这一期线上课程,时间虽短,但是对于入门而言,极具价值。这门课程也是为今后的高阶课程打基础的。
好了说了这么多,无非就是想要给自己的课程打个广告嘛哈哈哈,接下来当然是继续挑战自我咯~
今天又是一个超级有趣的经济学人图表,名字真不好叫,先把代码撸完,你们爱叫啥叫啥吧~
首先大致分析一下该图表,全是矩形块 ,而且错位排列,柱形图,NO,条形图,NO,因为横纵位置都是错开的。
好像骂一句MMP,这图Economics到底是用撒做的,太无聊了。
不过呢,如果是用ggplot2的话,这图确实难不倒我,思路如下。
用geom_rect图层,还记得之前做过的那个方块面积图嘛,思路如出一辙,我们仅需获取所有矩形块四个角所在位置的点坐标即可。
#构造原始数据
mydata30,8,6,7,14,11,22,3),
SouthKorea=c(15,6,3,5,16,14,19,22)
)
根据以上数据标签构造作图数据。
#China组的矩形数据:
start_xmin15,by=10,length=8)
end_xmax45,by=10,length=8)
start_ymin0,mydata[1:7,"China"]))
end_ymax"China"])
以上构造了左侧那组矩形的所有边角坐标点,接下来计算矩形中心 坐标点:
mynewdata15mynewdata$label_y2
构造右侧矩形系列边角坐标点:
start_xmin115,by=10,length=8)
end_xmax145,by=10,length=8)
start_ymin0,mydata[1:7,"SouthKorea"]))
end_ymax"SouthKorea"])
#计算中心点位置
data115data1$label_y2
合并左右侧数据
mynewdata
构造类别标签(图例填色需要)
label=rep(c("Food,beverages & tobacco","Clothing & footwear","Household & services","Health","Transport & communications","Leisure & education","Housing & household fuels","Others"),2)
mynewdata$label1: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"#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基础开始学起吧,冰冻三尺,非一日之寒,相信假以时日,你也可做的这么棒!
高维分面应用:ggplot2分面气泡图饼图
ggplot2玫瑰图案例:星巴克门店分布图
用ggplot2画了一个我也叫不上名的炫酷图表
构造方块条形图
多维放射状流向图的最佳布局方案
如需转载请联系EasyCharts团队!
微信后台回复“转载”即可!
【书籍推荐】《Excel 数据之美--科学图表与商业图表的绘制》
【必备插件】 EasyCharts -- Excel图表插件
【网易云课堂】 Excel 商业图表修炼秘笈之基础篇
【手册获取】国内首款-数据可视化参考手册:专业绘图必备