微課|ggplot2: 折線圖

2021-02-19 數萃大數據

使用ggplot2繪製折線圖.

折線圖整體美化.

繪製平滑折線圖.

繪製多變量折線圖.

數據是2006-2015年豬肉和牛肉進口數量,來自國家統計局. 為了便於比較,對數據進行了標準化處理.

library(tidyverse)
library(reshape2)
df=data.frame(  年份= seq(2006,2015),  牛肉=scale(c(44.72,    59.27,    44.32,    80.6,    119.59,    109.09,    61.21,    95.5,    79.32,    64.16)),  豬肉=scale(c(322.24,422.69,325.39,    295.04,    326.1,    332.01,    262.72,    275.65,    283.75,    400.88))  ) %>%
melt(id.vars='年份',variable.name='種類',value.name='值')
print(head(df))

構建單變量折線圖, 使用tidyverse包中的filter中filter函數從df中提取種類==』牛肉』的子集,

ggplot(aes(x=年份, y=值))構建畫板, 然後用geom_line()在畫板上繪折線圖.

df%>%filter(種類=='牛肉')%>%  ggplot(aes(x=年份, y=值))+  geom_line()+  labs(title='折線圖', subtitle=R.version.string, caption='@數萃大數據')

整體美化包含了畫板背景、繪圖區背景、坐標、注釋、標題的調整,以及前一節中的添加點標籤.

p=df%>%filter(種類=='牛肉')%>%  ggplot(aes(x=年份, y=值))+  geom_line(linetype=2,colour='white')+  labs(title='折線圖', subtitle=R.version.string, caption='@數萃大數據')+    scale_x_continuous(breaks = seq(2006,2015), labels = seq(2006,2015))+  scale_y_continuous(breaks = round(seq(min(df$值), max(df$值)+0.5, 0.6),2),   labels = round(seq(min(df$值), max(df$值)+0.5, 0.6),2),   limits = c(min(df$值),  max(df$值)+0.5))+  
 geom_point(colour='red')+  
 geom_text(aes(x=年份, y=值, label=round(值,2)),   colour='yellow',hjust=0.5,vjust=-1)+  theme(  
  plot.background = element_rect(fill = 'gray20'),  
  panel.background = element_rect(fill = 'gray20'),  
  panel.grid = element_blank(),  
  title = element_text(face = 'bold', size = 8,colour ='orange'),  
  plot.title = element_text(face = 'bold', size = 16,colour ='orange'),  
  plot.subtitle = element_text(face = 'bold', size = 8,colour ='orange'),  
  plot.caption =  element_text(face = 'bold', size = 7, color = 'orange'),  
  axis.line = element_line(colour = 'white'),  
  axis.text =  element_text(face = 'bold',colour = "white"),  
  axis.ticks = element_line(colour = 'white')   )p

繪製平滑曲線主要使用geom_span()函數,調整其中的span參數,一般來講span 越小越平滑.

p+geom_smooth(span=0.2,colour='white',size=0.5, method = 'loess')

繪製多變量折線圖的方法和單變量類似,主要區別是將geom_line()中的linetype參數賦值給分組變量,此外也可以付給其他美學對象如colour, size等.

df%>%  ggplot(aes(x=年份, y=值))+  geom_line(aes(linetype=種類),colour='white',size=0.5)+  labs(title='折線圖', subtitle=R.version.string, caption='@數萃大數據')+  scale_x_continuous(breaks = seq(2006,2015), labels = seq(2006,2015))+  scale_y_continuous(breaks = round(seq(min(df$值), max(df$值)+0.5, 0.6),2),   minor_breaks = round(seq(min(df$值), max(df$值)+0.5, 0.1),2),   labels = round(seq(min(df$值), max(df$值)+0.5, 0.6),2),   limits = c(min(df$值),  max(df$值)+0.5))+  geom_point(colour='red')+  geom_text(aes(x=年份, y=值, label=round(值,2)),   colour='yellow',hjust=0.5,vjust=-1,size=3)+  theme(   plot.background = element_rect(fill = 'gray20'),  
  panel.background = element_rect(fill = 'gray20'),  
    panel.grid = element_blank(),  
    title = element_text(face = 'bold', size = 8,colour ='orange'),
     plot.title = element_text(face = 'bold', size = 16,colour ='orange'),
     plot.subtitle = element_text(face = 'bold', size = 8,colour ='orange'),
     plot.caption =  element_text(face = 'bold', size = 7, color = 'orange'),
     axis.line = element_line(colour = 'white'),
     axis.text =  element_text(face = 'bold',colour = "white"),   axis.ticks = element_line(colour = 'white'),   legend.position ='top',   legend.justification = c("right", "top"),   legend.box.background = element_rect(color = 'gray20'),   legend.background =  element_rect(fill = 'gray20'),
     legend.key = element_rect(fill = 'gray20', colour = "gray20"),   legend.text = element_text(size = 8, colour = "white"),
     legend.title = element_text(size = 8,face='bold')  )

推薦閱讀

微課|ggplot2: 基礎知識

微課|R基礎繪圖:條形圖

微課|R基礎繪圖:箱線圖

【Python微課】系列之一:Matplotlib基礎繪圖

【統計思想之十六】—— 古人學問無遺力,少壯工夫老始成。

易圖秒懂の人工智慧誕生

【案例分析】NBA球員投籃數據分析與可視化

更多微課請關注【數萃大數據】公眾號,點擊學習園地—可視化

歡迎大家關注微信公眾號:數萃大數據

python大數據分析培訓班【杭州站】

時間:2017年8月18日-22日

地點:杭州亞朵吳酒店

更多詳情,請掃描下面二維碼

網絡爬蟲與文本挖掘培訓班【寧波站】

時間:2017年9月23日-25日

地點:維也納國際酒店(機場店)

更多詳情,請掃描下面二維碼

相關焦點

  • ggplot2|從0開始繪製折線圖
    其中折線圖可以反映某種現象的趨勢,本文利用R語言的ggplot2包,從頭帶您繪製各式各樣的線形圖。一  繪製單條折線圖載入數據及函數包library(ggplot2)df <- data.frame(dose=c("A", "B", "C"), len=c(5.16, 10.10, 30))head(df) dose len1 A 5.162
  • 手把手教你使用ggplot2繪製折線圖
    通常折線圖的橫坐標是為時間變量,縱坐標則是一般性的數值型變量,當然,折線圖也允許橫坐標為離散型數值和數值型數值。下面來解釋一下關於折線圖的繪製。一、繪製單條折線圖有關時間序列的折線圖library(ggplot2)library(lubridate) #處理日期時間相關的R包,非常有用,強烈推薦Year <- year(seq(from = as.Date('
  • 【R畫圖】手把手教你使用ggplot2繪製折線圖
    一、繪製單條折線圖library(ggplot2)#有關時間序列的折線圖library(lubridate) #處理日期時間相關的R包,非常有用,強烈推薦Year <- year(seq(from = as.Date('2006-01-01'), to = as.Date('2015-01-01'), by = 'year'))Weight <- c
  • R語言可視化——ggplot圖表中的線條
    R語言中ggplot函數系統中涉及到線條的地方有很多,最常見的場景就是我們做geom_line()(折線圖)、geom_path()(路徑圖),以及圖表的繪圖區(panel)、圖表區、網格系統(grid)中所涉及到的線條。今天以一個折線圖為例,簡要說明ggplot函數中關於線條的主要參數及其效果。
  • R ggplot2 實用系列----折線圖
    ggplot2 是繪製科研論文圖片的強有力工具,是很多其它包依賴的做圖包。
  • R科研繪圖01——基礎折線圖
    ,type = "o",main = "A")}par(op)目前,基礎函數繪製多個分組折線圖,需要藉助lines()函數。2. ggplot()函數不加任何參數繪製簡單折線圖。library(ggplot2)BOD %>% {  ggplot(.,aes(Time,demand))+geom_line()}
  • 跟著Nature Genetics學畫圖:R語言ggplot2畫折線圖並添加誤差線
    折線圖添加誤差線是非常常用的一種可視化方法,今天的推文介紹一下使用R語言的ggplot2作圖的代碼。
  • R語言的ggplot2做平滑的折線圖簡單小例子
    之前的圖文  跟著Nature Genetics學畫圖~ggplot2畫折線圖並在指定區域添加灰色背景 畫折線圖的遇到的一個問題是:ggplot2默認的折線圖畫出來基本都是帶尖的,有沒有辦法將折線圖變得平滑一點呢?
  • 【ggplot2】為條形圖和折線圖添加誤差線
    ggplot2隻能處理 data.frame數據,每列作為一個變量,是一個指標.library(ggplot2)tgc <- summarySE(tg, measurevar="len", groupvars=c("supp","dose"))tgc
  • R語言可視化(二):折線圖繪製
    02.折線圖繪製清除當前環境中的變量rm(list=ls())設置工作目錄setwd("C:/Users/Dell
  • R語言可視化——折線圖、平滑曲線及路徑圖
    今天跟大家講關於路徑圖、平滑曲線與折線圖及其美化。
  • 36分文章的折線圖該怎麼畫?
    前段時間看到Nature medicine上的一個富集分析折線圖(如下),非常漂亮,心儀不已。
  • 基於ggplot2包繪製SCI學術箱線圖的保姆級教程
    箱線圖,又稱箱形圖(boxplot)或盒式圖,不同於一般的折線圖、柱狀圖或餅圖等圖表,其包含一些統計學的均值、分位數、極值等統計量,該圖信息量較大,不僅能夠分析不同類別數據平均水平差異,還能揭示數據間離散程度、異常值、分布差異等。
  • 手把手教你使用ggplot2繪製中國地圖
    自從用了ggplot2包,越來越覺得其博大精深,通過圖層的概念可以繪製豐富的可視化圖形,如常見的散點圖、直方圖、條形圖、折線圖等。今天就教大家如何使用ggplot2實現地圖的繪製,以及如何在地圖中加入氣泡圖和條形圖。本文所使用的數據來自於經管之家moonstone作者提供的流行病學樣本數據。有關地理信息數據可至文後的下載連結。
  • ggplot2繪圖之四:散點圖、折線圖,點線圖
    語言ggplot2繪圖系列教程之基本認識 bilibili.com/video/BV1UK4y1r7bU第二十節 R語言ggplot2繪圖基本要素之數據、映射與圖層 bilibili.com/video/BV1zp4y1C7wU第二十一節 R語言ggplot2繪圖基本要素之幾何圖形:直方圖、密度圖與(分組)柱狀圖bilibili.com/video/BV1Ei4y187BL說明2:
  • Ggplot2 boxplot parameters
    第七十七題 2021年2月5日Ggplot2
  • 在Python中使用ggplot2風格及語法: plotnine與ggplot|可視化系列05
    Hadley Wickham編寫的ggplot2 在R語言中聲名遠揚,使得統計數據可視化能力成為R語言的一大優勢(這位大神還寫了dplyr、tidyr等影響深遠的R包)。plotnine常用繪圖類型[2]pn.geom_line繪製折線圖,默認的x軸需要是數值型變量,分類變量需要設置group參數,group = 1。
  • ggplot2|從0開始繪製箱線圖
    本文利用R語言的ggplot2包,從頭帶您繪製各式各樣的箱線圖。一 繪製基本的箱線圖載入數據及函數包library(ggplot2)library(RColorBrewer)dose數值 變成因子變量ToothGrowth$dose <- as.factor(ToothGrowth$dose) head(ToothGrowth
  • 跟著Nature Genetics學畫圖~ggplot2畫折線圖並在指定區域添加灰色背景
    今天的筆記記錄的是論文中Figure2圖a的畫法,圖a展示的是啥內容我暫時還沒有看懂,如果從畫圖的角度來說就是一個簡單的折線圖,正好之前有人問到如何添加灰色背景。今天先記錄一下畫圖的內容從上至下的第一個a<-seq(0,1.5,0.05)df1<-data.frame(x=1:60,y=sample(a,60,replace=T))畫圖library(ggplot2
  • ggplot2包的繪圖邏輯簡介
    在R語言裡,談及繪圖,ggplot2是最出名的繪圖包之一,作為一個繪圖神器,它提供了許許多多的功能給用戶使用,僅用短短幾行代碼,一幅幅高端大氣的圖像便躍然紙上,這可能就是ggplot2包的魅力所在。我們用相同的數據,通過plot函數跟ggplot函數分別繪製散點圖來簡單理解一下兩者的差異:library("ggplot2")    #加載安裝好的ggplot2包plot(iris$Sepal.Length, iris$Sepal.Width) #plot繪圖ggplot(data = iris,aes(x = Sepal.Length