折線圖簡介
折線圖通常用來對兩個連續變量的依存關系進行可視化,其中橫軸很多時候是時間軸。
但橫軸也不一定是連續型變量,可以是有序的離散型變量。
繪制基本折線圖
本例選用如下測試數據集:
繪制方法是首先調用ggplot函數選定數據集,並在aes參數中指明橫軸縱軸。然后調用條形圖函數geom_line()便可繪制出基本折線圖。R語言示例代碼如下:
# 基函數 ggplot(BOD, aes(x = Time, y = demand)) + # 折線圖函數 geom_line()
運行結果:
向折線圖添加數據標記
本例選用如下測試數據集:
如果要把數據集中的各樣本點在折線圖中標記出來只需在原來基礎上增加一個散點圖圖層(geom_line())。R語言實現代碼如下:
# 基函數 ggplot(BOD, aes(x = Time, y = demand)) + # 折線圖函數 geom_line() + # 散點圖函數 geom_point()
運行結果:
如果對標記的樣式不滿意可以通過修改geom_point()的參數進行調整。如可以將標記自定義為粉紅方框,R語言實現代碼如下:
# 基函數 ggplot(BOD, aes(x = Time, y = demand)) + # 折線圖函數 geom_line() + # 散點圖函數:size設置大小,shape設置形狀,colour設置邊框顏色,fill設置填充顏色 geom_point(size = 4, shape = 22, colour = "darkred", fill = "pink")
運行結果:
也可以將標記自定義為白色圓框,R語言實現代碼如下:
# 基函數 ggplot(BOD, aes(x = Time, y = demand)) + # 折線圖函數 geom_line() + # 散點圖函數:size設置大小,shape設置形狀,fill設置填充顏色 geom_point(size = 4, shape = 21,fill = "white")
運行效果:
更多自定義方法請參考函數手冊中geom_point()的說明。
繪制多重折線圖
本例選用如下測試數據集:
繪制方法是在基礎折線圖之上再在基函數的美學參數集里設置一個美學變量。可指定colour或者linetype兩種參數,分別將不同分組以不同顏色/線型折線表述。R語言示例代碼如下:
# 基函數:colour設置分組 ggplot(tg, aes(x = dose, y = length, colour = supp)) + # 折線圖函數 geom_line()
運行結果:
如果多重折線圖中做了數據標記處理,那么不同折線的標記有可能重復。可在繪制函數里設置position_dodge參數偏置處理。R語言實現代碼如下:
# 基函數:colour設置分組 ggplot(tg, aes(x = dose, y = length, shape = supp)) + # 折線圖函數:position設置偏置項 geom_line(position = position_dodge(.2)) + # 散點圖函數:position設置偏置項 geom_point(position = position_dodge(.2), size = 4)
運行結果:
修改線條樣式
本例選用如下測試數據集:
繪制方法很簡單,在geom_line()函數里設置linetype參數即可。R語言示例代碼如下:
# 基函數 ggplot(BOD, aes(x = Time, y = demand)) + # 折線圖函數:linetype設置線形 geom_line(linetype = "dashed", size = 1, colour = "orange")
運行效果:
折線圖置信域
本例選用如下測試數據集:
繪制方法是調用ggplot2的geom_ribbon函數,這個函數能畫出一個"帶"。我們可指定帶的上下邊界為置信區間,從而將折線圖的置信域可視化出來。測試數據集中Unc10y表示 Anomaly10y 95%置信水平下的置信區間。
R語言示例代碼如下:
# 基函數 ggplot(clim, aes(x = Year, Anomaly10y)) + # 帶狀圖函數:ymin設置下界,ymax設置上界; geom_ribbon(aes(ymin = Anomaly10y-Unc10y, ymax=Anomaly10y+Unc10y), alpha = 0.2) + # 折線圖函數 geom_line()
運行效果:
繪制基本面積圖
本例選用如下測試數據集:
繪制方法是在基函數中設置好數據集和橫縱軸,然后加入geom_area()函數繪制面積圖。R語言示例代碼如下:
# 基函數 ggplot(sunspotyear, aes(x = Year, y = sunspots)) + # 面積圖函數:fill設置填充顏色,alpha設置透明度; geom_area(fill = "blue", alpha = .2)
運行效果:
繪制堆積面積圖
本例選用如下測試數據集:
繪制方法是在基本面積圖之上往基函數的美學特征集里設置fill參數。R語言示例代碼如下:
# 基函數:fill設置分組依據 ggplot(uspopage, aes(x = Year, y = Thousands, fill = AgeGroup)) + # 面積圖函數 geom_area()
運行效果:
顯然,各分組數據有大小關系。因此,可將調色板設置為漸變色。R語言實現代碼如下所示:
# 基函數 ggplot(uspopage, aes(x = Year, y = Thousands, fill = AgeGroup)) + # 面積圖函數 geom_area() + # 調色標尺:breaks反轉圖例順序 scale_fill_brewer(palette = "Blues", breaks = rev(levels(uspopage$AgeGroup)))
運行結果:
如果需要繪制百分比堆積圖,只需要在上面工作的基礎上修改下原數據。
R語言實現代碼如下:
# 將數據轉換為百分比格式 uspopage_prop = ddply(uspopage, "Year", transform, Percent = Thousands / sum(Thousands) * 100) # 基函數 ggplot(uspopage_prop, aes(x = Year, y = Percent, fill = AgeGroup)) + # 面積圖函數 geom_area() + # 調色標尺 scale_fill_brewer(palette = "Blues", breaks = rev(levels(uspopage_prop$AgeGroup)))
運行結果:
PS:對於某些用戶來說,可能希望顏色深的圖例在下面。這個需求只需在基函數美學特征集里修改下圖例的排序順序即可。
PPS:堆積面積圖的原數據通常是寬數據格式,需要實現將其轉換為長數據格式。轉換方法可參考本系列博文的第二篇。