2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

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

 笨鳥先飛龍 2020-09-02

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

圖1 “時(shí)間序列圖”的搜索結(jié)果

1
 工具包 

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

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

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

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

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

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

3.1單個(gè)類別

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

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

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

圖3 柱形時(shí)間序列圖


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

作圖思路類似地,通過ggplot()函數(shù)指定數(shù)據(jù)庫,指定映射到x和y軸的變量, 此處應(yīng)注意的是,由于有多個(gè)國家,在aes中需用特定參數(shù)指定做顏色分類的變量country(折線圖和點(diǎn)圖用color,柱狀圖用fill)。facet_grid是將不同的國家分到不同的繪圖面板中展示,country~. 表示縱向排列多個(gè)繪圖面板, .~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 多分類折線型時(shí)間序列圖
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 多分類柱形時(shí)間序列圖

4
 圖形美化 

前面,我們按照基本繪圖思路(數(shù)據(jù)集-->數(shù)據(jù)映射-->圖類型)和分面設(shè)置,得到時(shí)序圖的”雛形”,然而,很多細(xì)節(jié)還需要完善。其中,對(duì)時(shí)間序列圖非常重要的時(shí)間坐標(biāo)標(biāo)簽的設(shè)置,本例按照數(shù)據(jù)的時(shí)間設(shè)置起止時(shí)間和時(shí)間間隔3天,賦值給變量datebreak,然后在scale_x_date使用即可;根據(jù)數(shù)據(jù)的時(shí)間長短,還可以按周week、月month、年year。其他常規(guī)有標(biāo)題、字體、顏色等的設(shè)置,都是使用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')+  #縱坐標(biāo)標(biāo)題
  xlab('Date')+   #橫坐標(biāo)標(biāo)題
  ggtitle('四個(gè)國家新增病例情況')+  #圖的標(biāo)題
  scale_x_date(breaks = datebreak,labels=date_format('%d-%b'))+ 
## theme主題美化
  theme(axis.title = element_text(size=18),  #坐標(biāo)標(biāo)題的設(shè)置
        plot.title = element_text(size=20,hjust=0.5),  #圖標(biāo)題的設(shè)置
        axis.text.x = element_text(angle=25,hjust=0.8,size=15), #x坐標(biāo)標(biāo)簽設(shè)置
        axis.text.y = element_text(size=15), # y坐標(biāo)標(biāo)簽設(shè)置
        strip.text= element_text(size=rel(1.2)),  # 分面標(biāo)簽設(shè)置
        panel.background = element_rect(colour = 'gray99'),  #畫板背景設(shè)置
        legend.position = 'none')+ #圖例位置設(shè)置:不顯示
  scale_fill_brewer(palette ='Set2') # 顏色設(shè)置

圖7 調(diào)整后的多分類柱形時(shí)間序列圖

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

制作:胡建雄、吳君樂

初審:胡建雄

審核:肖建鵬、劉濤

指導(dǎo):馬文軍

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多