R語言可視化——ggplot圖表配色技巧

今天跟大家分享ggplot圖表的配色原理與基本技巧。

圖表配色是一個很深奧的話題,多虧了R語言平台的眾多開發者貢獻的配色包,讓圖表的配色不再深不可測。

這裡我暫且將所有的配色場景劃分為兩類:

離散變數配色與連續變數配色

ggplot函數的配色機制相對來說比較智能,當你給colour或者fill屬性指定給變數映射的時候,該函數就會自動的區分變數屬性(是離散變數或者是連續變數),進而給出適用於兩種情況的配色風格。

ggplot(diamonds,aes(carat,price,colour=cut))+geom_point()n

ggplot(diamonds,aes(carat,price,colour=depth))+geom_point()n

大家可以對比以上兩句代碼:我並沒有指定任何實際的顏色,只是將colour顏色屬性指定給離散變數cut或者連續變數depth,而輸出的圖表已經完成了默認的離散顏色映射和連續顏色漸變映射。

對於以上兩種類型顏色使用場景,如果是要自行修改,則需要自行定義顏色標度:

離散顏色標度:

scale_colour_XXX:n

這裡最經常適用的三種情況

第一種情況,使用ggthemes包中的顏色主題,其中有些非常流行的顏色主題,如經濟學人的主題scale_colour_economist()、scale_colour_wsj(),還有excel的主題、tableau主題以及stata主題。

第二種情況,可以使用RColorBrewer包中的配色卡,以下是該包scale_colour_brewer()函數所允許使用的所有離散顏色色卡。

該配色系統方案給予我們三種關於分類變數的配色場景:

同色系方案,即在同一個色系中均勻取出若干個色段,用於分類變數填充,最終呈現的效果,看起來非常清爽,圖中最上面的一排顏色均為此類。(適用於表達有序因子分類變數,比如GDP的分段呈現等)

二分色系方案,即兩個色系方向平滑過渡,均勻取值,中間色一般為白色或者淡色。(適用於表達含有正負值的分類數量段,譬如增長率指標、利潤率等)

多分類不同色系方案,取不同色系相對協調的一組顏色,這種情況比較適合用於表達僅作分類,分類項之間沒有順序和大小的普通情況。

以上色卡以及配色包是由一個著名的專做地圖可視化配色方案的團隊所開發的,網址如下,提供在線配色並免費下載服務。(網站可能被屏蔽,如無法打開需要使用VPN)

Color Advice for Maps

當然第三種就是自己DIY了,R支持直接調用可識別的顏色名稱以及顏色代碼(16進位代碼)。

scale_fill_manual(values=c("#FB882C","#5B88A0"))n

或者

scale_fill_manual(values=c("Linen","Peru","PeachPuff","SandyBrown","Chocolate"))n

而針對連續型變數顏色修改的情況,可探討的餘地不多:

scale_fill_gradient()nscale_fill_gradient2()nscale_fill_gradient()允許分配一組雙色連續漸變,low="white",high="red"nscale_fill_gradient2()允許分配一組三色連續漸變,low="blue",mid="white",high="red"n

接下來針對以上幾種情況,我分別演示一個案例:

library("ggthemes")nlibrary("RColorBrewer")n

離散型:

###使用ggthemes包中的顏色主題(華爾街日報的主題色模板)

ggplot(diamonds,aes(carat,price,colour=cut))+geom_point()+scale_colour_wsj()n

###使用RColorBrewer包中的配色卡

ggplot(diamonds,aes(carat,price,colour=cut))+geom_point()+scale_colour_brewer(palette="Greens")n

###使用DIY方式自己製作配色卡

ggplot(diamonds,aes(carat,price,colour=cut))+geom_point()+scale_colour_manual(values=c("#84CEFC","#ACDAE4","#5C9EA4","#04FEFC","#4CD2CC"))n

連續型:

雙色漸變:

ggplot(diamonds,aes(carat,price,colour=depth))+geom_point()+scale_colour_gradient(low="white",high="Blue")n

三色漸變:

ggplot(diamonds,aes(carat,price,colour=depth))+geom_point()+scale_colour_gradient2(low="#8E0F2E", mid="#BFBEBE", high="#0E4E75")n

三色漸變:

ggplot(diamonds,aes(carat,price,colour=depth))+geom_point()+scale_colour_gradient2(low="#8E0F2E", mid="#BFBEBE", high="#0E4E75")n

以上就是R中最常用到的配色技巧,可以滿足我們大部分使用場景的需求。

聯繫方式:

wechat:ljty1991

Mail:578708965@qq.com

個人公眾號:數據小魔方(datamofang)

團隊公眾號:EasyCharts

qq交流群:[魔方學院]553270834

推薦閱讀:

R語言與Tableau集成之可視化應用
《R語言實戰》學習筆記之數據結構
R語言可視化——圖表美化與套用主題(下)
國外最全的圖表參考手冊
Learn R | 時間序列圖表的可視化

TAG:R编程语言 | 数据可视化 | 图表 |