乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      實用時間序列圖之R實現(xiàn)干貨

       笨鳥先飛龍 2020-09-02

      網(wǎng)絡搜索“時間序列圖”一詞,出現(xiàn)的多為折線圖(圖1),這也是時序圖中使用最多的一種類型,那下面我們就從折線類型的時序圖開始吧。

      圖1 “時間序列圖”的搜索結果

      1
       工具包 

      今天的分享主要使用到ggplot2scalesreshape2三個R包:畫圖首選當然還是強大的ggplot2包;scales包提供美化坐標軸、圖例等的一些函數(shù);reshape2包用于數(shù)據(jù)的格式轉換,作圖時通常需要將“寬格式”的數(shù)據(jù)轉換為“長格式”的數(shù)據(jù)格式。

      library(ggplot2)
      library(scales)
      library(reshape2)

      2
       案例數(shù)據(jù) 

      本例所用的數(shù)據(jù)為2020年3月1日至4月14日四個國家的新冠肺炎的疫情數(shù)據(jù),表1展示了前10天的數(shù)據(jù),此為“寬格式”的數(shù)據(jù)格式。為作圖做準備,需使用as.Date函數(shù)將date變量轉換為時間類型。

      表1 案例數(shù)據(jù)庫(部分)

      data1<-read.csv('dailynew.csv',header=TRUE) #讀取數(shù)據(jù)
      Sys.setlocale('LC_TIME', 'English')  #根據(jù)需要可選擇更改時間顯示為英文
      data1$date <-as.Date(data1$date)  #將date變量轉換為時間類型
      3
       繪制時序圖 

      3.1單個類別

      ggplot2繪圖的基本思路依次指定數(shù)據(jù)集data、數(shù)據(jù)映射aes、圖類型geom_。首先,我們展示一個國家發(fā)病情況的時序圖。通過ggplot()函數(shù)指定數(shù)據(jù)庫為data1,將date和Brazil分別映射到x和y軸, geom_line指定折線圖(color和size分別指定折線的顏色和粗細),那么,基本的時序圖雛形就出來了(圖2)。

      ggplot(data=data1,aes(x=date,y=Brazil))+
        geom_line(color='lightskyblue',size=1.3)

      圖2 折線類型的時間序列圖
      除了折線圖,柱形和散點的時間序列圖也應用較多,只需要更換相應的幾何圖層函數(shù)即可(圖3和圖4)。
      #柱形
      ggplot(data=data1,aes(x=date,y=Brazil))+
        geom_bar(stat = 'identity',fill='lightskyblue')
      #散點
      ggplot(data=data1,aes(x=date,y=Brazil))+
        geom_point(color='lightskyblue',size=3)

      圖3 柱形時間序列圖


      圖4 散點型時間序列圖
      3.2多個類別
      那么,如果想同時展示多個多家的發(fā)病情況,我們需通過melt函數(shù)將數(shù)據(jù)格式先做“寬轉長”,轉換后數(shù)據(jù)變?yōu)槿校簳r間變量、類別變量和對應值。
      data1.1<-melt(data1,id='date') 
      names(data1.1)<-c('date','country','newcases')  #重命名
      表2 轉換后的數(shù)據(jù)庫

      作圖思路類似地,通過ggplot()函數(shù)指定數(shù)據(jù)庫,指定映射到x和y軸的變量, 此處應注意的是,由于有多個國家,在aes中需用特定參數(shù)指定做顏色分類的變量country(折線圖和點圖用color,柱狀圖用fill)。facet_grid是將不同的國家分到不同的繪圖面板中展示,country~. 表示縱向排列多個繪圖面板, .~country則表示橫向排列。theme主題函數(shù)中l(wèi)egend.position 參數(shù)指定 'none'表示隱藏圖列。

      ggplot(data1.1,aes(x=date,y=newcases,color=country))+   
      geom_line(size=1.3)+
        facet_grid(country~.,scales = 'free')+ #縱向
        theme(legend.position = 'none')
      圖5 多分類折線型時間序列圖
      ggplot(data1.1,aes(x=date,y=newcases,fill=country))+  
      geom_bar(stat = 'identity',size=0.3)+
        facet_grid(.~country,scales = 'free')+ #橫向
        theme(legend.position = 'none')

      圖6 多分類柱形時間序列圖

      4
       圖形美化 

      前面,我們按照基本繪圖思路(數(shù)據(jù)集-->數(shù)據(jù)映射-->圖類型)和分面設置,得到時序圖的”雛形”,然而,很多細節(jié)還需要完善。其中,對時間序列圖非常重要的時間坐標標簽的設置,本例按照數(shù)據(jù)的時間設置起止時間和時間間隔3天,賦值給變量datebreak,然后在scale_x_date使用即可;根據(jù)數(shù)據(jù)的時間長短,還可以按周week、月month、年year。其他常規(guī)有標題、字體、顏色等的設置,都是使用ggplot2美化常用的函數(shù)。

      datebreak<-seq(as.Date('2020-03-01'),as.Date('2020-04-15'),by='3 days')
      ggplot(data1.1,aes(x=date,y=newcases,fill=country))+ 
        geom_bar(stat = 'identity',size=0.3)+  #柱形圖 
      facet_grid(country~.,scales = 'free')+  #分面
        ylab('Cases')+  #縱坐標標題
        xlab('Date')+   #橫坐標標題
        ggtitle('四個國家新增病例情況')+  #圖的標題
        scale_x_date(breaks = datebreak,labels=date_format('%d-%b'))+ 
      ## theme主題美化
        theme(axis.title = element_text(size=18),  #坐標標題的設置
              plot.title = element_text(size=20,hjust=0.5),  #圖標題的設置
              axis.text.x = element_text(angle=25,hjust=0.8,size=15), #x坐標標簽設置
              axis.text.y = element_text(size=15), # y坐標標簽設置
              strip.text= element_text(size=rel(1.2)),  # 分面標簽設置
              panel.background = element_rect(colour = 'gray99'),  #畫板背景設置
              legend.position = 'none')+ #圖例位置設置:不顯示
        scale_fill_brewer(palette ='Set2') # 顏色設置

      圖7 調整后的多分類柱形時間序列圖

      根據(jù)數(shù)據(jù)內容和所想展示的信息,我們可以通過在ggplot2包里找到相應的函數(shù)實現(xiàn)。簡單美化后的時序圖如圖7??赐晟厦娴膬热?,是不是好奇自己手頭的數(shù)據(jù)能做出什么樣的時序圖呢?那就趕快去試一下吧。

      制作:胡建雄、吳君樂

      初審:胡建雄

      審核:肖建鵬、劉濤

      指導:馬文軍

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多