R語言可視化——ggplot圖表中的線條
今天跟大家分享的是ggplot圖表中的一類重要元素——線條。
不要覺得專門為線條寫一章推送有點小題大做,其實線條對於圖表而言,功不可沒,即便是不起眼的網格、軸線、或者線條的粗線、線型、磅數等都將決定著你的圖表品質。
R語言中ggplot函數系統中涉及到線條的地方有很多,最常見的場景就是我們做geom_line()(折線圖)、geom_path()(路徑圖),以及圖表的繪圖區(panel)、圖表區、網格系統(grid)中所涉及到的線條。
今天以一個折線圖為例,簡要說明ggplot函數中關於線條的主要參數及其效果。
library(ggplot2)library(reshape2)library(ggthemes)library(RColorBrewer)data<-data.frame(Name = c("蘋果","谷歌","臉書","亞馬遜","騰訊"),Company = c("Apple","Google","Facebook","Amozon","Tencent"),Sale2013 = c(5000,3500,2300,2100,3100),Sale2014 = c(5050,3800,2900,2500,3300),Sale2015 = c(5050,4000,3200,2800,3700),Sale2016 = c(6000,4800,4500,3500,4300))mydata<-melt(data,id.vars=c("Name","Company"),variable.name="Year",value.name="Sale")
我先用一個簡單的折線圖代碼跑出來一個折線圖:
ggplot(mydata,aes(Company,Sale,fill=Year))+geom_line()
geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic?
當我用以上代碼運行的時候,軟體報錯,提示如上:
圖表展示區給出了一個只有坐標系的空白圖表;
相信根據英文意思也可以明白怎麼回事,因為我們給折線圖的X軸映射是一個離散的因子變數,而默認狀態下軟體會將單條記錄都會視作一個分類,這樣肯定是無法出來圖表的,而如果是一個連續變數,則會只會當做一個類別進行映射。
我們使用過ggplot內內置數據集驗證我們的猜想。
head(LakeHuron)LakeHuron$data<-seq(1875,1972,1)ggplot(LakeHuron,aes(data,LakeHuron))+geom_line()
以上使用了一個時間序列數據,很順利的完成了折線圖的製作。
那麼針對離散變數的折線圖到底如何來做呢,我們可以通過group指定分組的形式來達到目的。
ggplot(mydata,aes(Company,Sale,group=Year,fill=Year))+geom_line()
通過指定group即告知軟體將變數按照年份變數分組,否則單個不重複記錄都會被當做一個單獨分組。
ggplot(newdata,aes(Company,Sale,group=Year))+geom_line()+geom_point()ggplot(newdata,aes(Company,Sale,group=Year,colour=Year))+geom_line()+geom_point() #按照年份分組的同時按照年份進行線條的顏色映射
接下來通過對線條內部參數的修改,我們可以體會到ggplot對於線條細節的把控是多麼的專註:
ggplot(newdata,aes(Company,Sale,group=Year,colour=Year))+geom_line()+geom_point()
線條的參數主要有size、colour、linetype.
其中線條的類型主要有0=blank,1=solid,2=dashed,3=dotted,4=dotdash,5=longdash,6=twodash
每一個類型示例如下:
ggplot(newdata,aes(Company,Sale,group=Year,colour=Year))+geom_line()+geom_point() ggplot(newdata,aes(Company,Sale,group=Year,colour=Year))+geom_line(linetype=1,size=1.5)+geom_point()ggplot(newdata,aes(Company,Sale,group=Year,colour=Year))+geom_line(linetype=2,size=1.5)+geom_point()ggplot(newdata,aes(Company,Sale,group=Year,colour=Year))+geom_line(linetype=3,size=1.5)+geom_point()ggplot(newdata,aes(Company,Sale,group=Year,colour=Year))+geom_line(linetype=4,size=1.5)+geom_point()ggplot(newdata,aes(Company,Sale,group=Year,colour=Year))+geom_line(linetype=5,size=1.5)+geom_point()ggplot(newdata,aes(Company,Sale,group=Year,colour=Year))+geom_line(linetype=6,size=1.5)+geom_point()
下面是關於線條粗度的不同感知:
ggplot(newdata,aes(Company,Sale,group=Year,colour=Year))+geom_line(size=1,linetype=1)+geom_point() ggplot(newdata,aes(Company,Sale,group=Year,colour=Year))+geom_line(size=2,linetype=1)+geom_point()ggplot(newdata,aes(Company,Sale,group=Year,colour=Year))+geom_line(size=3,linetype=1)+geom_point()ggplot(newdata,aes(Company,Sale,group=Year,colour=Year))+geom_line(size=4,linetype=1)+geom_point()ggplot(newdata,aes(Company,Sale,group=Year,colour=Year))+geom_line(size=5,linetype=1)+geom_point()ggplot(newdata,aes(Company,Sale,group=Year,colour=Year))+geom_line(size=6,linetype=1)+geom_point()
以上依次使用的線條粗度值為1,2,3,4,5,6,大家可以通過圖表感受到ggplot圖表中線條的粗度變化規律。
除了折線圖(以及路徑圖,等圖層中的線條之外),在theme系統中存在大量的關於線條的屬性設置(網格系統、圖表邊框、軸線、圖例系統),均可以參照以上參數進行設置。
聯繫方式:
wechat:ljty1991
Mail:578708965@qq.com 個人公眾號:數據小魔方(datamofang) 團隊公眾號:EasyCharts qq交流群:[魔方學院]553270834推薦閱讀:
※你想要的地圖素材資源,我都幫你整理好了~
※R語言可視化——箱線圖及其美化技巧
※3D 酷炫立體圖現已加入 pyecharts 豪華午餐
※leaflet的小搭檔leaflet.minicharts來了,從此動態地圖又多了一些樂趣~~~
※ggplot2入門簡介