<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          R的基礎(chǔ)及進(jìn)階數(shù)據(jù)可視化功能包介紹

          共 4376字,需瀏覽 9分鐘

           ·

          2021-07-29 18:04

          R 作為入門級(jí)編程語(yǔ)言,被經(jīng)常運(yùn)用在數(shù)據(jù)整理、數(shù)據(jù)可視化、以及機(jī)器學(xué)習(xí)中。


          本篇文章將主要介紹在R中如何可視化數(shù)據(jù) (基礎(chǔ)+進(jìn)階)。

          R繪圖的原理


          使用R繪圖,我們需要在腦海中明確幾個(gè)必要元素。首先,需要有一張空白的畫布, 如下圖所示。其次,我們需要根據(jù)數(shù)據(jù)確定X軸、Y軸,以及X軸Y軸的取值范圍,因?yàn)橐粋€(gè)平面直角坐標(biāo)系在R繪圖過(guò)程中是必不可少的。接下來(lái),我們就可以選擇適當(dāng)?shù)膱D表類型(折線圖、柱狀圖、點(diǎn)狀圖等),并根據(jù)數(shù)據(jù)坐標(biāo)在坐標(biāo)系中描繪數(shù)據(jù)。最后,我們還可以在畫布上添加額外信息,例如圖表名稱,圖例等,當(dāng)然我們也可以根據(jù)需求使每個(gè)數(shù)據(jù)點(diǎn)在圖表中呈現(xiàn)不同的顏色和形狀、并排繪制多個(gè)圖表等。


          在擁有空白畫布的基礎(chǔ)上,我們可以使用R自帶的可視化功能語(yǔ)句plot()來(lái)描繪散點(diǎn)圖、折線圖、柱狀圖等,輔助用戶用于觀察整個(gè)數(shù)據(jù)集的潛在趨勢(shì)。


          根據(jù)R繪圖原理,使用如上語(yǔ)句,我們首先在空白的畫布上描繪出了我們提到的第一個(gè)元素,平面直角坐標(biāo)系

          Figure 1 plot()確定平面直角坐標(biāo)系


          在R語(yǔ)言里,圖表的繪制我們都可以使用編程,將一個(gè)任務(wù)(一個(gè)圖表)拆分成若干個(gè)子任務(wù)(前文提到的,圖表中的若干元素),然后疊加或擴(kuò)充子任務(wù)(疊加元素來(lái)形成圖表)來(lái)實(shí)現(xiàn)繪圖。R plot()也是如此。

          在擁有坐標(biāo)系的基礎(chǔ)上,我們便可以描繪數(shù)據(jù)點(diǎn),注意此處默認(rèn)圖表類型是點(diǎn)狀圖。

          在plot()語(yǔ)句括號(hào)中,逗號(hào)前我們定義了數(shù)據(jù)點(diǎn)的X軸坐標(biāo)值,逗號(hào)后定義了對(duì)應(yīng)數(shù)據(jù)點(diǎn)的Y軸坐標(biāo)值,兩個(gè)都是用數(shù)組的方式表達(dá)。因此如下plot()語(yǔ)句定義了5個(gè)數(shù)據(jù)點(diǎn),分別是(1,3),(2,5),(3,8),(4,9),(5,13)。

          Figure 2 plot()描繪數(shù)據(jù)點(diǎn)(點(diǎn)狀圖)

          根據(jù)R繪圖原理,在已經(jīng)擁有數(shù)據(jù)點(diǎn)的基礎(chǔ)上,我們可以通過(guò)擴(kuò)充了plot()語(yǔ)句來(lái)定義圖表的其他元素。我們把圖表類型從點(diǎn)狀圖改變?yōu)檎劬€圖,即在plot()語(yǔ)句中,我們加入一個(gè)逗號(hào),在逗號(hào)后定義 type =”l” 。

          Figure 3 plot()更改圖表類型 (折線圖)


          參考:type的取值及定義


          根據(jù)不同的數(shù)據(jù)集及需求我們可以繪制更為復(fù)雜的可視化圖表。

          例如像我們提到的,可視化圖表中的散點(diǎn)顏色,大小,以及形狀都可以通過(guò)擴(kuò)充plot()中的元素改變。

          在原點(diǎn)狀圖基礎(chǔ)上,我們定義了散點(diǎn)的大小(cex=4), 散點(diǎn)形狀(pch=11)以及散點(diǎn)顏色(col=”green”)

          Figure 4 plot()更改散點(diǎn)屬性(大小,形狀,顏色)


          參考:pch所有的參數(shù)定義。


          在更為復(fù)雜的圖表中,我們可以疊加運(yùn)行若干子元素語(yǔ)句來(lái)完成任務(wù)。在Figure 4基礎(chǔ)上,我們可以使用text() 在特定的坐標(biāo)增加文本。下圖代碼中,text(3,12, “This is text”) 表示在坐標(biāo)點(diǎn)(3,12)插入“This is text”。

          Figure 5 plot()在特定位置添加文本信息

          和text()同理, legend() 語(yǔ)句可對(duì)圖表呈現(xiàn)方式進(jìn)行標(biāo)注方便理解, lines() 語(yǔ)句允許我們?cè)谏Ⅻc(diǎn)圖的基礎(chǔ)上加入折線圖并且調(diào)整折線的粗細(xì)、長(zhǎng)短、類型。這些語(yǔ)句都可以被靈活使用,使可視化圖表在原有基礎(chǔ)上達(dá)到更理想的效果。

          R數(shù)據(jù)可視化工具


          在R語(yǔ)言里,除了R自帶的可視化工具plot(),還有很多精彩的工具包,比如ggplot2, 以及gganimate。

          ggplot2


          ggplot2 是R中被廣泛應(yīng)用的繪圖包。與R plot()的基本作圖系統(tǒng)相比,ggplot2旨在運(yùn)用簡(jiǎn)單的編程語(yǔ)言繪制及美化數(shù)據(jù)可視化圖表。我們將使用R Studio中自帶的數(shù)據(jù)集mpg來(lái)進(jìn)行g(shù)gplot2可視化演示根據(jù)R繪圖原理,我們需要在ggplot2中將一個(gè)圖表拆分成若干個(gè)子元素并進(jìn)行疊加繪制。不同于R plot(),我們可以將ggplot()的繪制理解為兩個(gè)步驟:首先我們先將需要的數(shù)據(jù)以及顏色等一些參數(shù)輸入ggplot()中,其次疊加geom_*()語(yǔ)句,來(lái)繪制指定的圖表的幾何圖像類型,比如散點(diǎn)圖、折線圖、柱狀圖等。

          參考R繪圖原理,ggplot2中我們可以將圖表拆分為如下常用元素:

          1. 數(shù)據(jù)(data): 需要可視化的數(shù)據(jù)
          2. 映射(mapping): 數(shù)據(jù)中可調(diào)配的參數(shù),如X、Y值,顏色等
          3. 幾何對(duì)象(geom_*): 圖表的幾何圖像類型
          4. 標(biāo)度(scale_*):變量以何種參數(shù)(何種顏色、形狀)映射到圖形上
          5. 主題(theme_*):圖表主題設(shè)定,通常ggplot()工具包帶有一些訂制主題,方便進(jìn)行圖表美化
          6. 分面(facet): 根據(jù)數(shù)據(jù)種類進(jìn)行拆分和分層畫圖
          7. 注釋(annotate): 如plot()中的text(),進(jìn)行文字標(biāo)注
          8. 標(biāo)簽(lab): 定義標(biāo)注的X、Y軸名稱,主標(biāo)題、副標(biāo)題等

          在開始前,我們需要下載并調(diào)用ggplot2


          注意:下載以及調(diào)用時(shí)工具包名稱為”ggplot2”,但聲明時(shí),我們需要聲明ggplot()語(yǔ)句

          在如下程序中,我們首先完成了ggplot()參數(shù)的輸入。

          在這里,我們首先聲明了第一個(gè)和第二個(gè)元素。data=mpg表示使用的數(shù)據(jù)集為mpg,mapping中是定義了映射到圖表X軸、Y軸的數(shù)據(jù)屬性,以及每個(gè)數(shù)據(jù)點(diǎn)的顏色(映射在X軸上的數(shù)據(jù)屬性是displ,Y軸是hwy,顏色則按照數(shù)據(jù)集中class的種類標(biāo)注,比如:如果數(shù)據(jù)集mpg中class有三個(gè)種類:A\B\C,那么數(shù)據(jù)的顏色標(biāo)注則會(huì)按照A\B\C區(qū)分。)

          注意:此時(shí)我們完成了第一個(gè)步驟:將數(shù)據(jù)以及顏色元素參數(shù)輸入ggplot()中?,F(xiàn)在,我們沒(méi)有生成任何圖表——運(yùn)行此行語(yǔ)句只會(huì)生成一個(gè)空白畫布。


          在繪完數(shù)據(jù)點(diǎn)后,參考plot(),在ggplot2中我們也通過(guò)使用第三個(gè)元素,geom_point()來(lái)改變幾何對(duì)象類型。

          參考:geom_xxx()常用類型

          Reference: ggplot2 Quick Reference: geom | Software and Programmer Efficiency Research Group (usi.ch)

          http://sape.inf.usi.ch/quick-reference/ggplot2/geom


          筆者常使用的包括geom_bar(), geom_line(), geom_hex(),geom_point()(分別為柱狀圖,條形圖,六邊形,散點(diǎn)圖)疊加生成不同的可視化圖表。

          注意:ggplot() 中每一個(gè)疊加子元素語(yǔ)句都需要用 “+”連接。而plot()中,我們則需要聲明一個(gè)新語(yǔ)句。

          Figure 6 ggplot 散點(diǎn)圖

          在原有圖表的基礎(chǔ)上,我們還可以給圖表進(jìn)一步美化。比如,在如下語(yǔ)句中, 根據(jù)ggplot()常用圖表元素清單,我們疊加并擴(kuò)充了如下子元素:

          第二個(gè)元素,ggplot()的映射(mapping)中我們擴(kuò)充了color = displ,它命令圖表的顏色按displ種類標(biāo)注
          第四個(gè)元素,scale_colour_gradient() 使我們的圖表具有了漸變的色彩
          第六個(gè)元素,theme_bw()使背景帆布變成白色
          第八個(gè)元素,labs(),xlab(),和ylab()則重修修訂了主題,副標(biāo)題,角標(biāo),以及X、Y軸名稱。

          gganimate


          除了可繪制靜態(tài)圖表的功能包,R還有很多強(qiáng)大的功能包,其中g(shù)ganimate就是筆者常用來(lái)描繪動(dòng)態(tài)圖表的功能包。在ggplot2的基礎(chǔ)上,gganimate允許用戶定義一個(gè)變量作為每一幀變化的參照。如果通過(guò)上文,你已經(jīng)對(duì)ggplot2已經(jīng)有一定了解,那么在原有的語(yǔ)句中添加一些簡(jiǎn)單的指令,就可以實(shí)現(xiàn)圖表的動(dòng)態(tài)化。

          與ggplot2同理,我們需要首先下載以及調(diào)用gganimate。


          在RStudio Console中我們可以看到,在使用gganimate之前,我們還需要安裝其他的功能包 包括gifski和 av。



          ggplot2相似,我們首先需要生成靜態(tài)圖表



          在生成靜態(tài)圖表的基礎(chǔ)上,動(dòng)圖及為多張靜態(tài)圖按一定規(guī)則堆在了一起。這里的規(guī)則便是我們提到的,按照聲明的變量,比如:時(shí)間或類別順序。

          上述代碼中,與ggplot2不同的是黃色劃線部分。

          ”title = ‘ Year: {frame_time} ’‘’代表了每一幀圖表的標(biāo)題。

          ’frame_time’ 與最后一行transition_time(year)相對(duì)應(yīng),說(shuō)明動(dòng)圖的每一幀是按照year的遞增順序變化的。ease_aes(‘linear’)則規(guī)定了圖表是以一種較柔和的幅度變化的。gganimate提供了很多變化方式,可在官方文檔中找到: 

          官方文檔

          https://gganimate.com/



          transition_*:定義數(shù)據(jù)按照哪個(gè)參變量進(jìn)行“移動(dòng)”
          view_*(): 定義坐標(biāo)軸隨數(shù)據(jù)變化(即為圖表可以根據(jù)數(shù)據(jù)值范圍拉大或縮?。?/span>
          shadow_*():定義數(shù)據(jù)出現(xiàn)的方式(存在舊數(shù)據(jù)的歷史記憶以影子的形態(tài)相繼出現(xiàn))
          enter_*()/exit_*():定義新數(shù)據(jù)出現(xiàn)和舊數(shù)據(jù)褪去的方式
          ease_aes():美觀定義,控制變化的節(jié)奏

          最后,看看我們的成果:


          同理,動(dòng)態(tài)折線圖和柱狀排名圖在gganimate中都是可以被實(shí)現(xiàn)的。



          總結(jié)


          總結(jié)一下:要在R中實(shí)現(xiàn)數(shù)據(jù)的可視化繪制,首先我們便要明確R繪圖原理。很多功能包的使用,比如ggplot(), gganimate(), 其中的元素便是根據(jù)R繪圖原理,將一個(gè)宏觀的圖表進(jìn)行元素拆分,并進(jìn)行分別疊加聲明。另外,在繪圖時(shí),千萬(wàn)不要急于對(duì)圖表進(jìn)行美觀。繪制出基本的圖表和幾何類型永遠(yuǎn)是最首要也是最耗時(shí)的任務(wù)。因?yàn)樵趯?shí)際情況中,數(shù)據(jù)集往往并不如我們想象的完美,我們需要使用R語(yǔ)言對(duì)數(shù)據(jù)進(jìn)行很多整合、清理。在基本圖表已經(jīng)完美的情況下,我們才能對(duì)圖表進(jìn)行美觀修飾。至于繪圖時(shí)的語(yǔ)法,我們只要熟悉了R繪圖原理,明白了繪圖時(shí)需要定義的元素有哪些,不論哪個(gè)工具包,就都可以手到擒來(lái)了。

          卞褚奇  UCLA數(shù)學(xué)、統(tǒng)計(jì)本科畢業(yè)生

          校對(duì):林亦霖


           覺(jué)得好看,點(diǎn)擊【好看】關(guān)注↓↓ 

          瀏覽 64
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本成人在线不卡 | 大香蕉大香蕉最新视频97 | 日本www色 | 爱草av| 波多野吉衣高清无码 |