快來給這個圖表起個名字吧~

我一直覺得,一門語言的學習一定要打牢基礎,只有基礎足夠牢固,後期你無論選擇哪個方向才會走的一路順風。

這是我學習R語言將近一年的深刻體會,當初自己也經歷過各種急功近利、自我陶醉的狀態,當時沒有任何人引導,也沒怎麼正兒八經的學過一門體系健全的教程,硬生生的一直刷題,就這麼一路撐過來來了,也算是勉強越過了第一個瓶頸期,但是過程真的太辛苦。

近來有很多人跟我諮詢如何學習R語言,其實個人覺得,在他們心裡肯定早就有了答案,只是自己不願意麵對,或者總想從過來人的口中得到一絲安慰而已。

要麼用時間去換技能,要麼花錢買時間,讓別人教你技能,但是兩種方法最終結果如何,都是取決於自己的,倘若你連如何安裝包、如何載入包、如何更新包這種連百度都知道的東西,都不願意自己去解決,那麼何時才能度過瓶頸期,才能成為熟手,更別提要熟練的運用於工作中。

學習習慣很重要,是否具備自我驅動力,不依靠外力去自助主解決問題,在某種程度上可能決定著你在這門技能上能達到的高度。

我這幾個月寫的可視化內容確實難度很高,一直擔憂這會不會帶壞讀者的節奏,好像R語言的可視化就應該朝著這種偏怪難的方向發展,而荒廢了基礎的學習。

我的擔憂是對的,確實有很多幾乎零基礎或者基礎很薄弱的小夥伴兒,可能ggplot2函數都沒記全,甚至R語言基礎都沒有看過一個遍,就開始各種複製黏貼,開始跑代碼,然後各種問題百出。

還是善意的提醒一下,寫這些東西僅僅是我的個人興趣,我是在用這些圖表來不斷嘗試突破現狀,挑戰自己的新高度,因為之前個人已經有過將近1年的高強度練習,早已過了瓶頸期。可是對於初學者而言,那些高難度圖表的代碼對你技能的提升幾乎毫無價值,你需要的是按照ggplot2的基礎強化學習,融會貫通其體系和理念。

為了給更多R語言可視化愛好者提供少走彎路的機會,最近和天善智能合作,開發了這一期線上課程,時間雖短,但是對於入門而言,極具價值。這門課程也是為今後的高階課程打基礎的。

好了說了這麼多,無非就是想要給自己的課程打個廣告嘛哈哈哈,接下來當然是繼續挑戰自我咯~


今天又是一個超級有趣的經濟學人圖表,名字真不好叫,先把代碼擼完,你們愛叫啥叫啥吧~

首先大致分析一下該圖表,全是矩形塊 ,而且錯位排列,柱形圖,NO,條形圖,NO,因為橫縱位置都是錯開的。

好像罵一句MMP,這圖Economics到底是用撒做的,太無聊了。

不過呢,如果是用ggplot2的話,這圖確實難不倒我,思路如下。

用geom_rect圖層,還記得之前做過的那個方塊面積圖嘛,思路如出一轍,我們僅需獲取所有矩形塊四個角所在位置的點坐標即可。

#構造原始數據nmydata<-data.frame(nChina=c(30,8,6,7,14,11,22,3),nSouthKorea=c(15,6,3,5,16,14,19,22)n)n

根據以上數據標籤構造作圖數據。

#China組的矩形數據:nstart_xmin<-seq(from=15,by=10,length=8)nend_xmax<-seq(from=45,by=10,length=8)nstart_ymin<-cumsum(c(0,mydata[1:7,"China"]))nend_ymax<-cumsum(mydata[,"China"])n

以上構造了左側那組矩形的所有邊角坐標點,接下來計算矩形中心 坐標點:

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

構造右側矩形系列邊角坐標點:

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

合併左右側數據

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

構造類別標籤(圖例填色需要)

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

圖形可視化過程

library("ggplot2")nlibrary("grid")nlibrary("showtext")nlibrary("Cairo")nfont.add("myfont","msyh.ttc")nsetwd("E:/數據可視化/R/R語言學習筆記/數據可視化/ggplot2/優秀R語言案例")n

草圖預覽:

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

採集色板:

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

最終圖形

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

哈哈是不是很神奇呀,想不想學這麼棒的技能,那就從ggplot2基礎開始學起吧,冰凍三尺,非一日之寒,相信假以時日,你也可做的這麼棒!

文本閱讀原文,有最新上線的ggplot2入門課程,已經有200+多位小夥伴兒加入了,快來一起玩耍吧~

Hellobi Live | 9月12日 R語言可視化在商務場景中的應用


推薦閱讀:

與R初相識:R的數據結構與EXCEL數據導入
Tidy data(整理數據)---Hadley Wickham
東易日盛:技術與數據,驅動傳統家裝行業效率和用戶體驗提升
關於數據分析學習筆記的計劃(以及目錄)
如何搭建一個指標體系

TAG:R编程语言 | 数据可视化 | 数据分析 |