1小時掌握R語言數據可視化

2022-01-01 表哥有話講

ggplot2是R語言最為強大的作圖軟體包,有著自成一派的可視化理念,數據可視化是數據分析的重要一步,讓我們通過由淺入深的掌握數據可視化的精髓。

展開一張畫布

ggplot2和其他作圖工具不同,它是以圖層覆蓋圖層的方式畫出一個完美圖像的,就像是photoshop裡的圖層,那麼首先我們得有一張畫布(如果沒有安裝R語言和ggplot2請見《 十八-R語言特徵工程實戰 》)

> library(ggplot2)> ggplot()

使用geom_abline、geom_hline、geom_vline畫直線

下面我們來在這張畫布上畫一條橫線:

> ggplot() + geom_hline(yintercept = 5)

我們也可以畫一條豎線

> ggplot() + geom_vline(xintercept = 5)

當然我們也可以畫斜線,

> geom_abline(intercept = 2.5, slope=1)

本應該畫一條斜率為1,截距為2.5的斜線,但是因為畫布不會自動移動到這條直線所在的位置,所以我們要實現幾個點來定位一下畫布,那麼怎麼畫點呢,我們先來研究一下

使用geom_point畫點

下面我們來一張空畫布上畫一個點,畫點和畫線不同在於:線可以指定一個x或y的截距就可以了,可以作為一個簡單的參數傳給geom_hline或geom_vline,但是畫點涉及到的是一些x、y的數據值,ggplot是把數據和作圖撇清的,也就是數據是數據,成像是成像

我們先來構造點:

> x <- c(1,2,3)> y <- c(1,3,4)> data <- data.frame(x,y)> str(data)'data.frame':      3 obs. of  2 variables: $ x: num  1 2 3 $ y: num  1 3 4

我們其實構建了一個frame,裡面包含了三個點:(1,1), (2,3), (3,4)

那麼如果要畫出這些點的話應該這樣:

> ggplot(data, aes(x = x, y = y)) + geom_point()

前面是聲明數據部分,後面是聲明怎麼成像

下面我們開始調整geom_point的參數,比如展示不同的顏色(左),和展示不同的形狀(右)

> ggplot(data, aes(x, y)) + geom_point(aes(colour = factor(y)))> ggplot(data, aes(x, y)) + geom_point(aes(shape = factor(y)))

如果顏色不是按factor區分,而是按連續值來區分,那麼就是漸變形式,即

> ggplot(data, aes(x, y)) + geom_point(aes(colour = y))

還可以展示不同的大小,可以固定大小(左),也可以根據數據確定大小(右)

> ggplot(data, aes(x, y)) + geom_point(aes(size = 3))> ggplot(data, aes(x, y)) + geom_point(aes(size = y))

這裡我們要說明一下aes的作用,看下面兩個用法(如圖左、右):左邊的含義就是畫紅色點,右邊是按照指定的一個維度展示不同的顏色

> ggplot(data, aes(x, y)) + geom_point(colour="red")> ggplot(data, aes(x, y)) + geom_point(aes(colour="red"))

接著上面劃線一節,我們在已經畫了點的畫布上再畫一條斜線:一條斜率為1,截距為1的直線,也就是y=x+1,那麼一定是經過(2,3),(3,4)兩個點的

> ggplot(data, aes(x, y)) + geom_point(aes(colour = y)) + geom_abline(slope = 1, intercept = 1)

使用geom_bar來畫直方圖

直觀上看,直方圖是表達一種累積量,因此默認的直方圖的高度是counts或sum,也就是像下面這樣子:因為我們的x只有1、2、3單獨的三個值,所以直接geom_bar()高度相同,但如果判斷x<2,那麼有一個滿足,兩個不滿足,所以高度分別是1和2

> ggplot(data, aes(x)) + geom_bar()> ggplot(data, aes(x<2)) + geom_bar()

當然我們可以自己指定直方圖的高度的計算方法,以下兩種方法效果相同

> ggplot(data, aes(x)) + geom_bar(aes(weight=y))> ggplot(data, aes(x,y)) + geom_bar(stat = "identity")

如果我們想要把多種取值的統計數目累加顯示在柱狀圖上,可以這樣:這裡面對同一個x,不同y出現總數不一樣,累加起來就像下圖展示,其中如果y是數字,那麼想把他當成類別,需要轉成factor

> x <- rep(c(1,2), c(2,3))> y <- rep(c(3,2), c(1,4))> data <- data.frame(x,y)> ggplot(data, aes(x)) + geom_bar(aes(fill=factor(y)))

當然我們也可以不簡單堆疊起來,比如扁平放置(左),或拉伸至頂部(右)

> ggplot(data, aes(x)) + geom_bar(aes(fill=factor(y)), position="dodge")> ggplot(data, aes(x)) + geom_bar(aes(fill=factor(y)), position="fill")

利用geom_density畫概率密度曲線

概率密度就是某些值出現的頻次多少的一個曲線,並做平滑,如下:

> x <- rep(c(1,3,7,11,23,50,60),c(1,30,400,60,4,55,11))> y <- rep(c(1,3,7,11,23,50,60),c(1,30,400,60,4,55,11))> data <- data.frame(x,y)> ggplot(data, aes(x)) + geom_density()

我們可以調整平滑的寬度:

> ggplot(data, aes(x)) + geom_density(adjust = 1/5)

如果我們想按照不同的y值來分開畫密度圖,並且用不同顏色來表示不同的y值,那麼我們可以用描邊的方式(左),也可以用填充的方式(中),當然也可以兩者結合

> ggplot(data, aes(x, colour = factor(y))) + geom_density(adjust = 1/5)> ggplot(data, aes(x, fill = factor(y))) + geom_density(adjust = 1/5)> ggplot(data, aes(x, colour = factor(y), fill = factor(y))) + geom_density(adjust = 1/5, alpha = 0.1)

和柱狀圖一樣,我們也可以通過geom_density的position參數來顯示累計情況:

> ggplot(data, aes(x, fill = factor(y))) + geom_density(adjust = 1/5, position='fill')> ggplot(data, aes(x, fill = factor(y))) + geom_density(adjust = 1/5, position='stack')

用geom_text和geom_label寫標註文本

為了讓圖像更清晰,我們需要把關鍵數據打上標籤展示出來,我們可以這樣做:

> ggplot(data, aes(x, y, label=rownames(data))) + geom_point(aes(colour = y)) + geom_abline(slope = 1, intercept = 1) + geom_text(check_overlap = TRUE)> ggplot(data, aes(x, y, label=rownames(data))) + geom_point(aes(colour = y)) + geom_abline(slope = 1, intercept = 1) + geom_label()

總結

本節介紹了ggplot作圖原理以及基本的幾種作圖方式,基於這些知識相信你很容易能做出精美的圖像了

選摘:www.shareditor.com

相關焦點

  • 免費公開課|1小時教你用R 語言完成漂亮的數據可視化
    在國內,大數據作為一個新型的熱門行業,市場上掌握大數據知識技術的人才非常少,企業對大數據開發人才非常緊缺也形成了招聘競爭,不惜開出高額薪水吸引大數據人才。大數據像是『黑盒子』一樣的新世界,現在我們用數據挖掘來探索這個世界的規則和信息,但是沒有問題導向的數據挖掘需要花費大量的時間來探索。與文字相比,圖片能高效直接地幫助我們快速識別信息。
  • R語言做空間分析(一)——數據的空間可視化實現
    上一期我們講到R語言在醫學統計中的應用-基礎教程,今天我們來學習地理信息數據的空間可視化實現。
  • 數據可視化之R語言
    分類數據的可視化使用條形圖、點圖、柱形圖、脊柱圖、馬賽克圖、餅圖及四折圖連續數據的可視化使用箱線圖、直方圖、散點圖及其變種、帕累託圖==============================================一、分類數據的可視化
  • Day7:R語言課程 (R語言進行數據可視化)
    使用「map」函數進行數據結構迭代。導出在R環境之外使用的圖片。1.設置數據框以進行可視化在本課中需要製作與每個樣本中的平均表達量相關的多個圖,還需要使用所有可用的metadata來適當地注釋圖表。觀察rpkm數據。每列代表實驗中的樣品,每個樣品具有~38K值,對應著不同轉錄本的表達。
  • R語言數據可視化ggplot2包
    ggplot2是R語言最為強大的作圖軟體包,有著自成一派的可視化理念,數據可視化是數據分析的重要一步,讓我們通過由淺入深的掌握數據可視化的精髓。
  • 【語言班】R語言數據分析與可視化高級研修班(4.26-29)
    R語言是用於數據分析、數據可視化的高級程式語言,其功能包括:數據存儲和處理、科學計算工具;能夠進行幾乎所有的統計分析;內置豐富便捷的數據可視化功能
  • 社會科學研究中的R語言與數據可視化系列直播課
    隨著信息化趨勢的加強,傳統的社會科學學科,諸如經濟學、管理學、社會學、政治學、教育學等對數據的依賴日益加強。研究者不僅需要掌握恰當的數據分析方法,還需要學會恰當的呈現數據分析的結果。一幅好的圖形不僅能大大提升文章的檔次,還能顯著增加文章的接受率和引用率!
  • R語言學習筆記之相關性矩陣分析及其可視化
    導入數據data(mtcars)#加載數據集mydata <- mtcars[, c(1,3,4,5,6,7)]head(mydata, 6)#查看數據前6行(as.matrix(mtcars[,1:7]))flattenCorrMatrix(res3$r, res3$P)
  • R語言天氣可視化應用
    如果單獨用R開發,爬取數據及存儲同樣很容易實現,地圖和天氣數據的可視化也是很方便就能畫出來,但是用R做Web網站,那就會遇到很大的瓶頸了,因為R是單線程同步的計算模型,Web應用的高並發特點,會直接讓R程序崩潰的。 所以,綜合上面的問題,如果R語言和PHP語言能結合在一起使用,不僅能避開每種語言不擅長的地方,還能在擅長的領域發揮出每種語言的特性,我們將通過多語言的混編技術做出很不一樣的應用來。
  • 數據可視化完美指南-R-python
    從數據到圖表有什麼樣的數據做什麼樣的圖作者提供了一張樹狀圖,幫助並引導我們找到合適自己數據的的可視化方式What kind of data do you have?# Librarieslibrary(tidyverse)## -- Attaching packages -- tidyverse 1.2.1 --## √ ggplot2 3.2.0 √ purrr 0.3.2## √ tibble 2.1.3 √ dplyr 0.8.3## √ tidyr
  • R語言數據分析從入門到進階-R語言數據可視化基礎-基礎繪圖函數部分代碼
    《R語言數據分析從入門到進階
  • R語言學習:可視化分析,Apply家族函數,row_number函數,R4DS學習,數據變換
    01 美國謀殺數據集可視化分析畫圖代碼# 美國謀殺數據集可視化分析library(dslabs)library(tidyverse)library(ggthemes)dataApply家族函數的選擇,可以由數據的結果和想要的結果來決定。Apply家族函數是R語言自帶的函數集,不需要安裝任何額外包就可以使用和執行。1 apply()函數描述
  • 15種獨一無二的創新數據可視化方式
    全文共5489字,預計學習時長11分鐘可視化能解答那些尚未發現的問題。本·施耐德曼(Ben Shneiderman)掌握數據可視化技術會打開新世界的大門,帶來更多機會。精心設計的可視化能幫助程式設計師找到原始數據集的核心。 這是成功的數據科學項目和普通的數據科學項目之間的區別。 因此,本文旨在展示數據可視化的強大功能。
  • R語言和Python語言在數據科學方面的比較:當今進展的總結
    我們欣賞這個視頻的主要原因在於,它展示了迄今為止Python和R語言的主要進步。對於數據科學,這兩種語言都已變得十分合適。有人指出這兩種語言各自的傳統缺陷(例如:用Python進行數據可視化,或者用R進行數據整理),幸而,近年來發行了一些擴展包,比如:用於python的Altair,或是用於R的dplyr,使這些弱點可得到有效緩解。
  • R語言、Matlab、MeteoInfo、Python及ArcGis可視化DEM地形圖
    一、R語言可視化DEM地形圖-往期推文超連結:1
  • 技術貼 | R語言:組學關聯分析和pheatmap可視化
    舉例展示R語言組學關聯分析的方法。宏基因組數據以KO-樣品豐度表為例。代謝組數據以metabolite-樣品豐度表為例。基本方法是用R語言psych包corr.test函數進行兩組數據的相關分析,結果經格式化後用pheatmap可視化得熱圖。一、模擬輸入 1.
  • 掌握R語言for循環一文就夠了(認真臉)
    嗨,大家好,我就是帥氣的小編~R語言是進行統計分析和可視化的優秀語言(其實機器學習和網頁製作也可以用R,小聲說~|ω`))R語言相信大家在利用R語言進行數據分析的時候可能會有大數據分析需求。")R=c("r") #相關係數P=c("p") #P值for (r in 1:nrow(data)){ #在下面的{}內r的範圍從1到data的行數,即100for (t in r:nrow(data)){ #在下面的{}內t的範圍從1到
  • 深度| R vs Python:R是現在最好的數據科學語言嗎?
    Sharp Sight Labs 近日在 r-bloggers 上發表了一篇文章,論述了為什麼當今的數據科學工作者應該學習 R 語言的原因。為了給大家提供一個明晰的對比,我們在後面補充了 2016 年初的一篇文章:R vs.Python。
  • 中了數據可視化的毒:BBC如何使用R語言繪製數據圖表?
    BBC(英國廣播公司)近日分享了他們的視覺與數據新聞團隊使用 R 語言繪製新聞圖表的經驗。為了簡化流程,他們創建了一個 bbplot 軟體包和一份參考手冊,並也已將它們開源。過去一年裡,BBC 視覺與數據新聞(Visual and Data Journalism)團隊的數據記者已經從根本上改變了他們繪製發表在 BBC 新聞網站上的數據圖表的方式。
  • R語言學習:數據可視化技能,Pair Plot,LR模型手寫版,dplyr包across函數,快速學習ggplot2包畫圖
    01 R語言數據可視化技能數據可視化目的是為了發現和溝通。R語言擅長做數據可視化。數據可視化技能是我們做數據科學工作的核心技能之一。我喜歡學習和實踐R語言做數據可視化知識,增進自己的數據可視化技能。知識總結:1 使用dplyr包和tidyr包做數據準備工作2 使用ggplot包做數據可視化工作我創建了R語言群,歡迎大家加入,可以掃描文末的二維碼