《數(shù)據(jù)可視化分析-基于R語言》(第 4 版)課件 第1-5章 數(shù)據(jù)可視化與R語言 -展示數(shù)據(jù)分布_第1頁
《數(shù)據(jù)可視化分析-基于R語言》(第 4 版)課件 第1-5章 數(shù)據(jù)可視化與R語言 -展示數(shù)據(jù)分布_第2頁
《數(shù)據(jù)可視化分析-基于R語言》(第 4 版)課件 第1-5章 數(shù)據(jù)可視化與R語言 -展示數(shù)據(jù)分布_第3頁
《數(shù)據(jù)可視化分析-基于R語言》(第 4 版)課件 第1-5章 數(shù)據(jù)可視化與R語言 -展示數(shù)據(jù)分布_第4頁
《數(shù)據(jù)可視化分析-基于R語言》(第 4 版)課件 第1-5章 數(shù)據(jù)可視化與R語言 -展示數(shù)據(jù)分布_第5頁
已閱讀5頁,還剩197頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

R語言數(shù)據(jù)可視化分析賈俊平2026/1/26基于R語言數(shù)據(jù)可視化分析本書特色新穎的寫作視角嚴(yán)謹(jǐn)?shù)慕M織結(jié)構(gòu)完備的繪制代碼詳盡的圖形解讀賈俊平2026/1/261.1

數(shù)據(jù)可視化概述1.2R語言的初步使用1.3R語言的數(shù)據(jù)類型及其操作1.4R語言數(shù)據(jù)處理第1章數(shù)據(jù)可視化與R語言

展示數(shù)據(jù)或數(shù)據(jù)分析結(jié)果探索數(shù)據(jù)特征和模式從數(shù)據(jù)中提取信息讓別人理解數(shù)據(jù)或分析結(jié)果概要

本章導(dǎo)讀圖形分類可視化分析比較數(shù)值大小和差異展示數(shù)據(jù)結(jié)構(gòu)和流向展示數(shù)據(jù)分布展示變量間關(guān)系比較樣本相似性展示時間序列組合式和交互式圖形數(shù)據(jù)可視化就是把數(shù)據(jù)用圖形展示出來。它既是對數(shù)據(jù)的展示過程,也是對數(shù)據(jù)信息的再提取過程可視化分析需要清楚三個主題:數(shù)據(jù)類型、分析目的、實現(xiàn)工具數(shù)據(jù)類型決定你可以畫出什么圖形分析目的決定你需要畫出什么圖形實現(xiàn)工具決定你能夠畫出什么圖形可視化的三個主題

可視化的三個問題可視化的起源最早可追溯到17世紀(jì),當(dāng)時就開始對一些物理的基本測量結(jié)果手工繪制圖表18世紀(jì)統(tǒng)計圖形得以迅速發(fā)展,其奠基人WilliamPlayfair發(fā)明了折線圖、條形圖、餅圖等。隨著繪制手段的進步,到19世紀(jì),統(tǒng)計圖形得到了進一步的發(fā)展和完善,產(chǎn)生了直方圖、輪廓圖等更多的圖形,初步形成了統(tǒng)計圖表體系進入20世紀(jì)50年代,隨著計算機技術(shù)的發(fā)展,逐步形成了計算機圖形學(xué),人們利用計算機創(chuàng)建出了首批圖形和圖表進入21世紀(jì),可視化作為一門性對獨立的學(xué)科仍處于迅速發(fā)展和完善之中,它在生活、生產(chǎn)和科學(xué)研究的各個領(lǐng)域已得到廣泛應(yīng)用可視化及其應(yīng)用——可視化簡史1.1數(shù)據(jù)可視化概述可視化及其應(yīng)用——什么是可視化數(shù)據(jù)可視化(datavisualization)是研究數(shù)據(jù)視覺表現(xiàn)形式的方法和技術(shù),它是綜合運用計算機圖形學(xué)、圖像、人機交互等技術(shù)將數(shù)據(jù)映射為可識別的圖形、圖像、視頻或動畫,并允許用戶對數(shù)據(jù)進行交互分析從數(shù)據(jù)分析和應(yīng)用的角度講,可視化是將數(shù)據(jù)用圖形表達出來的一種手段,它可以幫助人們更好地理解或解釋數(shù)據(jù),探索數(shù)據(jù)的特征和模式,并從數(shù)據(jù)中提取更多的信息隨著AI和數(shù)據(jù)科學(xué)的發(fā)展,可視化手段不斷進步,數(shù)據(jù)可視化的概念和內(nèi)涵也在不斷地演進之中,可視化的形式也從傳統(tǒng)的統(tǒng)計圖表發(fā)展成形式多樣的可視化技術(shù),應(yīng)用場景也日趨廣泛1.1數(shù)據(jù)可視化概述可視化及其應(yīng)用——可視化的應(yīng)用數(shù)據(jù)可視化的應(yīng)用的方式和形式主要取決于使用者的目的有些是用于數(shù)據(jù)觀測和跟蹤,比如,實時的股票價格指數(shù)變化圖,道路交通狀況的實時監(jiān)測等。這類可視化強調(diào)實時性和圖表的可讀性有些是用于數(shù)據(jù)分析和探索,比如,分析數(shù)據(jù)分布特征的圖表,分析變量間關(guān)系的圖表等。這類圖表主要強調(diào)數(shù)據(jù)的呈現(xiàn)或表達,發(fā)現(xiàn)數(shù)據(jù)之間的潛在關(guān)聯(lián)有些是為幫助普通用戶或商業(yè)用戶快速理解數(shù)據(jù)的含義或變化,比如,商業(yè)類圖表。還有些則是用于教育或宣傳,比如出現(xiàn)在街頭、雜志上的圖表。這類圖表強調(diào)說服力,通常使用強烈的對比、置換等手段,繪制出具有沖擊力的圖像1.1數(shù)據(jù)可視化概述可視化的數(shù)據(jù)類型可視化面對的數(shù)據(jù)單純類很少單純值較少混合型經(jīng)常變量分類類別變量(定性)無序類別變量(名義值)有序類別變量(順序值)布爾變量(二值)數(shù)值變量(定量)離散變量(離散值)連續(xù)變量(連續(xù)值)時間變量(定性或定量)定性:離散值定量:連續(xù)值1.1數(shù)據(jù)可視化概述可視化的數(shù)據(jù)類型類別數(shù)據(jù)(categoricaldata)類別數(shù)據(jù)也稱分類數(shù)據(jù)或定性數(shù)據(jù)(qualitativevariable)它是類別變量(categoricalvariable)的觀測結(jié)果根據(jù)取值是否有序可分為無序類別變量和有序類別變量無序類別變量的各類別間是不可以排序的,而有序類別變量的各類別間則是有序的數(shù)值數(shù)據(jù)(metricdata)也稱定量數(shù)據(jù)(quantitativedata),它是數(shù)值變量(metricvariable)的觀測結(jié)果根據(jù)其取值的不同可以分為離散變量(discretevariable)和連續(xù)變量(continuousvariable)離散變量是只能取有限值的變量,連續(xù)變量是可以在一個或多個區(qū)間中取任何值的變量1.1數(shù)據(jù)可視化概述可視化的實現(xiàn)工具為什么用R?使用不同軟件能夠畫出的圖形是不同的,即使是同一種圖形,不同軟件有可能有不同的圖形式樣R是一種免費的統(tǒng)計計算和繪圖語言,也是一套開源的數(shù)據(jù)分析解決方案。R不僅提供了內(nèi)容豐富的數(shù)據(jù)分析方法,也具有功能強大的可視化功能R具有多樣性和靈活性的特點,使用者可根據(jù)需要選擇圖形并進行修改R提供了大量的繪圖包和函數(shù),幾乎所有圖形均可以使用R函數(shù)來繪制,每個函數(shù)都有詳細(xì)幫助信息如果對圖形有特殊要求,使用者還可以自己編寫程序繪制想要的圖形Excel—表處理軟件—提供基本的分析圖形SPSS—統(tǒng)計分析軟件—提供基本分析圖形R—專業(yè)的數(shù)據(jù)分析和可視化軟件—可視功能強大,提供大量的圖形Python—編程語言,可視化功能不如R其他專業(yè)繪圖軟件,如tableau1.1數(shù)據(jù)可視化概述圖形的基本分類可視化分析中使用的圖形種類繁多,因可視化的目標(biāo)不同,要對圖形做出確切的分類十分困難相同的數(shù)據(jù)可繪制不同的圖形,相同的圖形可以適用于不同的數(shù)據(jù)或分析目的同一類圖形有很多變種形式,繪制方式不同,稱謂也不相同。因此,同一圖形也可以歸屬于不同的類別本書根據(jù)可視化目標(biāo)(分析目的)將圖形大致分為以下幾類(僅供參考)1.1數(shù)據(jù)可視化概述圖形的基本分類1.1數(shù)據(jù)可視化概述比較數(shù)值差異或大小的圖形適用的數(shù)據(jù)主要是各類別對應(yīng)的頻數(shù)向量或其他數(shù)值向量,其數(shù)值可以是絕對值,也可以是比例或百分比等涉及的變量可以是一個或多個。其可視化圖形可以大致分成4類條形或矩形表示數(shù)值大小,如條形圖、馬賽克圖等用圓或點表示數(shù)值大小,如圓堆圖、氣泡圖等用顏色飽和度表示數(shù)值大小,如熱圖用點或點與坐標(biāo)軸的連線、點與點的連線等表示各類別對應(yīng)的數(shù)值差異,如克利夫蘭點圖、棒棒糖圖和啞鈴圖等圖形的基本分類1.1數(shù)據(jù)可視化概述比較數(shù)值大小和差異的圖形圖形的基本分類1.1數(shù)據(jù)可視化概述展示數(shù)據(jù)結(jié)構(gòu)和流向的圖形展示數(shù)據(jù)構(gòu)成和流向的圖形適用的數(shù)據(jù)與比較數(shù)值差異或大小的圖形相同數(shù)據(jù)結(jié)構(gòu)或構(gòu)成是指類別的部分與整體的關(guān)系,通常用部分類別的數(shù)值占全部數(shù)值的比例或百分比表示對于只涉及一個類別變量的單層結(jié)構(gòu),其可視化圖形主要有餅圖、扇形圖、環(huán)形圖、弧形圖等對于涉及兩個或兩個以上類別變量的多層結(jié)構(gòu)。其可視化圖形主要有餅環(huán)圖、旭日圖、沃羅諾伊圖等數(shù)據(jù)流向是指數(shù)據(jù)在不同類別之間的流動方向及流量大小,其可視化圖形主要有?;鶊D、和弦圖等圖形的基本分類1.1數(shù)據(jù)可視化概述展示數(shù)據(jù)結(jié)構(gòu)和流向的圖形圖形的基本分類1.1數(shù)據(jù)可視化概述展示數(shù)據(jù)分布的圖形數(shù)據(jù)分布主要是指數(shù)值數(shù)據(jù)分布的形狀、點的分布位置和范圍等特征其可視化圖形可以分為3類展示數(shù)據(jù)分布形狀的圖形,如直方圖、核密度圖、箱線圖、小提琴圖等展示數(shù)據(jù)在數(shù)軸上分布位置的圖形,如帶狀圖、威爾金森點圖及其變種展示數(shù)據(jù)分布范圍和分布特性的圖形,如極差圖、Q-Q圖等圖形的基本分類1.1數(shù)據(jù)可視化概述展示數(shù)據(jù)分布的圖形圖形的基本分類1.1數(shù)據(jù)可視化概述展示變量間關(guān)系的圖形展示變量間關(guān)系使用的圖形取決于所分析的變量類型。對于數(shù)值變量之間關(guān)系,可以用散點圖來展示它們之間的關(guān)系如果只涉及兩個數(shù)值變量,且觀測值不是很多時,可以用普通散點圖進行展示當(dāng)觀測值較多時,圖形中的點會出現(xiàn)重疊而難以識別,此時可以繪制分箱散點圖或密度散點圖等進行展示如果僅分析3個變量之間的關(guān)系,則可以繪制3D散點圖或氣泡圖如果分析多個變量之間的關(guān)系,則可以用散點圖矩陣、相關(guān)系數(shù)矩陣、相關(guān)系數(shù)熱圖等進行展示圖形的基本分類1.1數(shù)據(jù)可視化概述展示變量間關(guān)系的圖形圖形的基本分類1.1數(shù)據(jù)可視化概述比較樣本相似性的圖形如果有多個樣本的多個觀測變量,要比較各樣本的相似性或差異,其可視化圖形可以大致分為比較整體相似性的圖形,如平行坐標(biāo)圖、雷達圖等;比較樣本間差異的圖形,如星圖、臉譜圖等;對樣本進行確切分類的圖形,如聚類圖、聚類熱圖等。圖1-5列出了比較樣本相似性的基本圖形圖形的基本分類1.1數(shù)據(jù)可視化概述展示時間序列的圖形探索時間序列變化模式和特征的基本圖形是折線圖或面積圖當(dāng)有多個變量時,可以繪制流線圖、地平線圖等要展示一個時間序列中各相鄰觀測值的變化方向,可以繪制瀑布圖要展示多個樣本在不同時間上的變化趨勢,可以繪制斜線圖要比較多個樣本在不同時間點上的排名變化,可以繪制凹凸圖如果數(shù)據(jù)是按一年中的每天記錄的,則可以繪制日歷圖展示每天的數(shù)據(jù)變化特征如果要尋找序列的變化趨勢,可以繪制平滑曲線、成分分解圖等圖形的基本分類1.1數(shù)據(jù)可視化概述展示時間序列的圖形

R和Rstudio的下載與安裝

Rstudio的下載在安裝完R后,可以進入RStudio的官方網(wǎng)站(/products/rstudio/download/)下載RStudio。點擊Free下的Download,根據(jù)自己的計算機系統(tǒng)選擇適合的版本下載并安裝完成后,雙擊即可啟動RStudio進入開始界面1.2R語言的初步使用對象賦值與運行對象賦值將多個數(shù)據(jù)組合成一個數(shù)據(jù)集,并給數(shù)據(jù)集起一個名稱,然后把數(shù)據(jù)集賦值給這個名稱,這就是所謂的R對象(object)。R對象可以是一個數(shù)據(jù)集、模型、圖形等任何東西R語言的標(biāo)準(zhǔn)賦值符號是“<-”,也允許使用“=”進行賦值,但推薦使用更加標(biāo)準(zhǔn)的前者#將5個數(shù)據(jù)賦值給對象xx<-c(80,87,98,73,100)#將數(shù)據(jù)框data1_1賦值給對象yy<-data1_11.2R語言的初步使用編寫代碼腳本R代碼雖然可以在提示符后輸入,但如果輸入的代碼較多,難免出現(xiàn)輸入錯誤如果代碼輸入錯誤或書寫格式錯誤,運行后R會出現(xiàn)錯誤提示或警告信息。這時,在R中修改錯誤的代碼就比較麻煩,也不利于代碼的保存R代碼最好是在腳本文件中編寫,書寫完成后,選中輸入的代碼,并點擊鼠標(biāo)右鍵,選擇“運行當(dāng)前行或所選代碼”,即可在R中運行該代碼并得到相應(yīng)結(jié)果1.2R語言的初步使用包的安裝與加載#查看R幫助help(sum)#查看mean函數(shù)的幫助信息help(package="stats")#查看包stats的信息var#查看var函數(shù)源代碼#安裝包install.packages("ggplot2")#安裝包ggplot2install.packages(c("ggplot2","vcd"))#同時安裝兩個包#加載包library(ggplot2)#加載包ggplot2require(ggplot2)#加載包ggplot2有些R包發(fā)布在GitHub上,如果想下載GitHub上的包,需要先安裝devtools包,然后運行devtools::install_github("庫名/包名")來安裝(GitHub網(wǎng)址:/)。如果不知道庫名,可以使用githubinstall包,該包專門負(fù)責(zé)從GitHub安裝R包,只需要提供R包名稱,無需庫名。比如想安裝ggTimeSeries包,先安裝并加載githubinstall包,然后運行g(shù)ithubinstall("ggTimeSeries")即可完成安裝。有少數(shù)R包對R的版本具有依賴性,在更新或安裝最新的R版本時,建議保留使用過的R版本1.2R語言的初步使用包的安裝與加載本書使用的R包,建議在使用本書前先安裝好所需的包1.2R語言的初步使用aplotggchartsggmultiggthemesrayshaderaplpackggChernoffggpatternggTimeSeriesRColorBrewercirclizeggcirclepackggpieggtricksrempsycComplexHeatmapggcirclizeggpirateggwordcloudreshape2corhexggcorrplotggplot2gridExtrascalesDescToolsggcorrplot2ggpmiscGWalkRscatterpiedevtoolsggdistggpointdensityIDPmiscscatterplot3ddplyrggESDAggpolintrodataviztidyre1071ggExtraggpubrlattiecExtratidytextEnvStatsggfittextggrepellubridatetidyverseexportggforceggridgesnetworkD3treemapifyfactoextraggformulaggroundopenairvcdforecastggh4xggscipatchworkviridisgeomtextpathgghalvesggsideplotlywaterfallsggalluvialgghighlightggsignifplotrixwebrGGallyggHoriPlotggstatsplyrWeightedTreemapsggaltggiraphExtraggstatsplotpngwordcloud2ggbeeswarmggmagnifyggstreampsych

ggbraceggmosaicggstudentqqplotr

R的數(shù)據(jù)類型在R中分析數(shù)據(jù)或創(chuàng)建一個圖形時,首先要有分析或繪圖的數(shù)據(jù)集(dataset)R處理的數(shù)據(jù)集類型包括向量(vector)、矩陣(matrix)、數(shù)組(array)、數(shù)據(jù)框(dataframe)、因子(factor)、列表(list)等1.3R語言的數(shù)據(jù)類型及其操作向量向量——是個一維數(shù)組,其中可以是數(shù)值型數(shù)據(jù),也可以是字符數(shù)據(jù)或邏輯值(如TRUE或FALSE)要在R中錄入一個向量,需要使用c函數(shù),將不同元素組合成向量#錄入向量a<-c(2,5,8,3,9)#數(shù)值型向量b<-c("甲","乙","丙","丁")#字符型向量c<-c("TRUE","FALSE","FALSE","TRUE")#邏輯值向量a;b;c#運行向量a,b,c#訪問向量中的元素a[c(2,5)]1.3R語言的數(shù)據(jù)類型及其操作矩陣矩陣——二維數(shù)組,其中的每個元素都是相同的數(shù)據(jù)類型用matrix函數(shù)可以創(chuàng)建矩陣#用matrix函數(shù)創(chuàng)建矩陣a<-1:6#生成1到6的數(shù)值向量mat<-matrix(a,#創(chuàng)建向量a的矩陣

nrow=2,ncol=3,#矩陣行數(shù)為2,列數(shù)為3byrow=TRUE)#按行填充矩陣的元素mat#顯示矩陣mat#給矩陣添加行名和列名rownames(mat)=c("甲","乙")#添加行名colnames(mat)=c("A","B","C")#添加行名#用t函數(shù)對矩陣轉(zhuǎn)置t(mat)#矩陣轉(zhuǎn)置1.3R語言的數(shù)據(jù)類型及其操作數(shù)組數(shù)組——與矩陣類似,但維數(shù)可以大于2使用array函數(shù)可以創(chuàng)建數(shù)組#創(chuàng)建數(shù)組dim1<-c("男","女")#指定第1個維度為2個元素dim2<-c("贊成","中立","反對")#指定第2個維度為3個元素dim3<-c("東部","西部","南部","北部")#指定第3個維度為4個元素data<-round(runif(24,50,100))#生成24個均勻分布的隨機數(shù),并取整d<-array(data,c(2,3,4),dimnames=list(dim1,dim2,dim3))#創(chuàng)建數(shù)組并賦值給對象d1.3R語言的數(shù)據(jù)類型及其操作數(shù)據(jù)框——創(chuàng)建數(shù)據(jù)框數(shù)據(jù)框——一種表格結(jié)構(gòu)的數(shù)據(jù),類似于Excel中的數(shù)據(jù)表。使用data.frame函數(shù)可創(chuàng)建數(shù)據(jù)框使用data.frame函數(shù)可創(chuàng)建數(shù)據(jù)框#寫入姓名和分?jǐn)?shù)向量names<-c("劉文濤","王宇翔","田思雨","徐麗娜","丁文斌")#寫入學(xué)生姓名向量stat<-c(68,85,74,88,63)#寫入各門課程分?jǐn)?shù)向量math<-c(85,91,74,100,82)econ<-c(84,63,61,49,89)#將向量組織成數(shù)據(jù)框形式table1_1<-data.frame(學(xué)生姓名=names,統(tǒng)計學(xué)=stat,數(shù)學(xué)=math,經(jīng)濟學(xué)=econ)

#將數(shù)據(jù)組織成數(shù)據(jù)框形式,并儲存在對象table1_1中table1_1#顯示table1_1中的數(shù)據(jù)1.3R語言的數(shù)據(jù)類型及其操作數(shù)據(jù)框——數(shù)據(jù)框的查看和訪問數(shù)據(jù)框的查看只顯示數(shù)據(jù)框的前幾行或后幾行。使用head(table1_1)默認(rèn)顯示數(shù)據(jù)的前6行,如果只想顯示前3行,則可以寫成head(table1_1,3)。使用tail(table1_1)默認(rèn)顯示數(shù)據(jù)的后6行,如果想顯示后3行,則可以寫成tail(table1_1,3)使用class函數(shù)可以查看數(shù)據(jù)的類型使用nrow函數(shù)和ncol函數(shù)可以查看數(shù)據(jù)框的行數(shù)和列數(shù)使用dim函數(shù)可以同時查看數(shù)據(jù)框的行數(shù)和列數(shù)當(dāng)數(shù)據(jù)量比較大時,可以使用str函數(shù)查看數(shù)據(jù)的結(jié)構(gòu)1.3R語言的數(shù)據(jù)類型及其操作數(shù)據(jù)框——數(shù)據(jù)框的查看和訪問數(shù)據(jù)框的訪問對數(shù)據(jù)框中的特定變量進行分析或繪圖,用“$”符號指定要分析的變量也可以用下標(biāo)指定變量所在的列或行(這樣可以避免書寫變量名)要分析指定的列時,需要將逗號放在數(shù)字的前面,要分析指定的行時,需要將逗號放在數(shù)字的后面1.3R語言的數(shù)據(jù)類型及其操作數(shù)據(jù)框——數(shù)據(jù)框的合并使用rbind函數(shù)可以將不同的數(shù)據(jù)框按行合并使用cbind函數(shù)可以將不同的數(shù)據(jù)框按列合并#數(shù)據(jù)框合并table1_1<-read.csv("C:/mydata/chap01/table1_1.csv")table1_2<-read.csv("C:/mydata/chap01/table1_2.csv")#按行合并數(shù)據(jù)框mytable<-rbind(table1_1,table1_2)1.3R語言的數(shù)據(jù)類型及其操作數(shù)據(jù)框——排序有時需要對向量或數(shù)據(jù)框進行排序。使用sort函數(shù)可以對向量排序,函數(shù)默認(rèn)decreasing=FALSE(默認(rèn)的參數(shù)設(shè)置可以省略不寫),即升序排序,降序時,可設(shè)置參數(shù)decreasing=TRUE如果要對整個數(shù)據(jù)框中的數(shù)據(jù)進行排序,排序結(jié)果與數(shù)據(jù)框中的行變量對應(yīng),則可以使用base包中的order函數(shù)和sort_by函數(shù)、dplyr包中的arrange函數(shù)等排序函數(shù)arrange可以根據(jù)數(shù)據(jù)框中的某個列變量對整個數(shù)據(jù)框排序。函數(shù)默認(rèn)按升序排序,降序時,設(shè)置參數(shù)desc(變量名)即可#使用sort_by函數(shù)根據(jù)某個列變量對整個數(shù)據(jù)框排序table1_1<-read.csv("C:/mydata/chap01/table1_1.csv")sort_by(table1_1,table1_1$姓名)#按姓名升序?qū)φ麄€數(shù)據(jù)框排序

#使用dplyr包中的arrange函數(shù)根據(jù)某個列變量對整個數(shù)據(jù)框排序library(dplyr)#加載包table1_1<-read.csv("C:/mydata/chap01/table1_1.csv")arrange(table1_1,desc(數(shù)學(xué)))#按數(shù)學(xué)分?jǐn)?shù)降序?qū)φ麄€數(shù)據(jù)框排序1.3R語言的數(shù)據(jù)類型及其操作數(shù)據(jù)框——修改和匯總dplyr應(yīng)用dplyr提供了多個數(shù)據(jù)處理函數(shù),并提供了管道操作符“%>%”可以連續(xù)操作數(shù)據(jù)select函數(shù)可選擇列變量mutate可以創(chuàng)建一個新列、修改列summarise_all函數(shù)可以對多個數(shù)值列進行匯總并返回一個新數(shù)據(jù)框summarise_if函數(shù)可以對滿足條件的列進行匯總并返回一個新數(shù)據(jù)框summarise函數(shù)結(jié)合group_by函數(shù)可以創(chuàng)建帶有分組匯總結(jié)果的新數(shù)據(jù)框1.3R語言的數(shù)據(jù)類型及其操作因子和列表因子——類別變量在R中稱為因子(factor),因子的取值稱為水平(level)。很多分析或繪圖都可以按照因子的水平進行分類處理使用factor函數(shù)可以將向量編碼為因子#創(chuàng)建因子v<-c("金融","地產(chǎn)","醫(yī)藥","醫(yī)藥","金融","醫(yī)藥")#創(chuàng)建向量af1<-factor(a);f1#將向量a編碼為因子#將因子轉(zhuǎn)換為數(shù)值as.numeric(f1)#將無序因子轉(zhuǎn)換為有序因子或數(shù)值b<-c("很好","好","一般","差","很差")#創(chuàng)建向量bf2<-factor(b,ordered=TRUE,levels=c("很好","好","一般","差","很差"))as.numeric(f2)#將因子轉(zhuǎn)換為數(shù)值1.3R語言的數(shù)據(jù)類型及其操作數(shù)據(jù)讀取和保存#讀取編碼格式為GBK的csv文件(含有標(biāo)題)

table1_1<-read.csv("C:/mydata/chap01/table1_1.csv",fileEncoding="GBK")#讀取編碼格式為UTF-8的csv文件(未運行)

read.csv("C:/mydata/chap01/table1_1.csv",fileEncoding="UTF-8")read.csv("C:/mydata/chap01/table1_1.csv")#數(shù)據(jù)編碼格式為UTF-8的csv文件#存為編碼格式為GBK的csv文件

write.csv(table1_1,file="C:/mydata/chap01/table1_1.csv",fileEncoding="GBK")

#存為編碼格式為GBK的csv文件

#存為編碼格式為UTF-8的csv文件

write.csv(table1_1,file="C:/mydata/chap01/table1_1.csv)#默認(rèn)編碼格式為UTF-8write.csv(table1_1,file="C:/mydata/chap01/table1_1.csv",fileEncoding="UTF-8")

#指定編碼格式為UTF-8#注:file=""指定文件的存放路徑和名稱。存為UTF-8的csv文件,在用Excel打開時可能會顯示亂碼,建議存為GBK編碼格式。1.3R語言的數(shù)據(jù)類型及其操作數(shù)據(jù)抽樣使用sample函數(shù)可以從一個已知的數(shù)據(jù)集中抽取簡單隨機樣本函數(shù)默認(rèn)replace=FALSE,即采取無放回抽樣方式抽取樣本,設(shè)置參數(shù)replace=FALS則采取有放回抽樣方式抽取樣本,該函數(shù)也可以抽出符合特定條件的數(shù)據(jù)性別專業(yè)在讀學(xué)位網(wǎng)購金額女會計學(xué)學(xué)士382女金融學(xué)碩士171男會計學(xué)博士579男管理學(xué)學(xué)士211女會計學(xué)學(xué)士654……………………男管理學(xué)博士396女金融學(xué)博士398女金融學(xué)學(xué)士360女管理學(xué)碩士575男金融學(xué)碩士717#隨機抽取5個不同的專業(yè)組成一個樣本df<-read.csv("C:/mydata/chap01/data1_1.csv")n1<-sample(df$專業(yè),size=5);n1#無放回抽取5個不同專業(yè)n2<-sample(df$專業(yè),size=5,replace=TRUE);n2#有放回抽取5個不同專業(yè)10個網(wǎng)購金額組成一個樣本n3<-sample(df$網(wǎng)購金額,size=10);n3#無放回抽取10個網(wǎng)購金額n4<-sample(df$網(wǎng)購金額,size=10,replace=TRUE);n4#有放回抽取10個網(wǎng)購金額1.4R語言數(shù)據(jù)處理數(shù)據(jù)篩選根據(jù)需要找出符合特定條件的某類數(shù)據(jù)使用R的dplyr包中的filter函數(shù)、基礎(chǔ)包base包中的subset函數(shù)等均可以返回滿足條件的向量、矩陣或數(shù)據(jù)集的子集。使用sample函數(shù)和which函數(shù)、下標(biāo)[]方法也可以很容易進行數(shù)據(jù)篩選#使用dplyr包中的filter函數(shù)篩選出符合特定條件的數(shù)據(jù)library(dplyr)df<-read.csv("C:/mydata/chap01/data1_1.csv")filter(df,網(wǎng)購金額>=800)#篩選網(wǎng)購金額大于等于800的所有學(xué)生filter(df,性別=="男"&網(wǎng)購金額>=700&網(wǎng)購金額<=800)#篩選出網(wǎng)購金額在700~800之間的男生filter(df,性別=="男"&專業(yè)=="金融學(xué)"&在讀學(xué)位=="博士")#篩選出金融學(xué)專業(yè)的男博士#使用subset函數(shù)篩選出符合特定條件的數(shù)據(jù)subset(df,性別=="女"&專業(yè)=="會計學(xué)"&網(wǎng)購金額>=700)#篩選出會計學(xué)專業(yè)網(wǎng)購金額大于等于700的女生subset(df,網(wǎng)購金額>600&專業(yè)=="管理學(xué)"&性別=="男")#篩選出網(wǎng)購金額大于600管理學(xué)專業(yè)的男生1.4R語言數(shù)據(jù)處理生成隨機數(shù)用R軟件產(chǎn)生隨機數(shù)十分簡單,只需在相應(yīng)分布函數(shù)的前面加上字母r即可。由于是隨機生成,每次運行會得到不同的隨機數(shù)。要想每次運行都產(chǎn)生相同的一組隨機數(shù),可在生成隨機數(shù)之前使用函數(shù)set.seed()設(shè)定隨機數(shù)種子。使用相同的隨機數(shù)種子,每次運行都會產(chǎn)生一組相同的隨機數(shù)#生成不同分布的隨機數(shù)rnorm(n=5,mean=0,sd=1)#產(chǎn)生5個標(biāo)準(zhǔn)正態(tài)分布隨機數(shù)set.seed(15)#設(shè)置隨機數(shù)種子rnorm(n=5,mean=50,sd=5)#產(chǎn)生5個均值為50、標(biāo)準(zhǔn)差為5的正態(tài)分布隨機數(shù)runif(n=5,min=0,max=10)#在0到10之間產(chǎn)生5個均勻分布隨機數(shù)rchisq(n=5,df=10)#產(chǎn)生5個自由度為10的卡方分布隨機數(shù)1.4R語言數(shù)據(jù)處理數(shù)據(jù)類型的轉(zhuǎn)換變量轉(zhuǎn)換成向量將一種數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為另一種數(shù)據(jù)結(jié)構(gòu)將數(shù)據(jù)框中的某個變量轉(zhuǎn)換為一個向量,也可以將幾個變量合并轉(zhuǎn)換成一個向量(注意:數(shù)據(jù)合并必須有意義)使用as.vector函數(shù)可以將變量轉(zhuǎn)換成向量#將統(tǒng)計學(xué)分?jǐn)?shù)轉(zhuǎn)化成向量v1<-as.vector(table1_1$統(tǒng)計學(xué));v1#統(tǒng)計學(xué)分?jǐn)?shù)和數(shù)學(xué)分?jǐn)?shù)合并轉(zhuǎn)換為向量v2<-as.vector(c(table1_1$統(tǒng)計學(xué),table1_1$數(shù)學(xué)));v2#將數(shù)據(jù)框轉(zhuǎn)換為向量v3<-as.vector(as.matrix(table1_1[,2:4]));v31.4R語言數(shù)據(jù)處理數(shù)據(jù)類型的轉(zhuǎn)換數(shù)據(jù)框轉(zhuǎn)換成矩陣使用as.matrix函數(shù)可以將數(shù)據(jù)框轉(zhuǎn)化成矩陣,使用as.data.frame可以將矩陣轉(zhuǎn)化成數(shù)據(jù)框#將數(shù)據(jù)框table1_1轉(zhuǎn)換為矩陣matmat<-as.matrix(table1_1[,2:4])#將table1_1中的2~4列換為矩陣matrownames(mat)=table1_1[,1]#命名矩陣的行名為table1_1第1列的名稱mat#顯示矩陣#將矩陣mat轉(zhuǎn)換成數(shù)據(jù)框,并添加上列(變量)名稱library(tidyverse)df<-as.data.frame(mat)%>%#將矩陣轉(zhuǎn)換成數(shù)據(jù)框df

rownames_to_column("姓名")#加上列名稱(姓名)1.4R語言數(shù)據(jù)處理數(shù)據(jù)類型的轉(zhuǎn)換短格式轉(zhuǎn)化成長格式數(shù)據(jù)框table1_1中的每一門課程占據(jù)一列,這種數(shù)據(jù)形式屬于短格式或稱寬格式使用R做數(shù)據(jù)分析或繪圖時,有時需要將“課程”和“分?jǐn)?shù)”分別放在單獨的列中,這種格式的數(shù)據(jù)就是長格式將短格式數(shù)據(jù)轉(zhuǎn)化成長格式數(shù)據(jù),可以使用reshape2包中的melt函數(shù)、tidyr包中的gather函數(shù)等。使用前需要安裝并加載reshape2包或tidyr包#使用reshape2包中的melt函數(shù)融合數(shù)據(jù)df1<-melt(table1_1,id.vars="姓名",="課程",="分?jǐn)?shù)")

#設(shè)置id變量,變量名和值名#使用tidyr包中的gather函數(shù)融合數(shù)據(jù)library(tidyr)#加載tidyr包df2<-gather(table1_1,key="課程",value="分?jǐn)?shù)","統(tǒng)計學(xué)","數(shù)學(xué)","經(jīng)濟學(xué)")#key為融合后的變量名稱#使用tidyr包中的pread函數(shù)將長格式轉(zhuǎn)換成短格式##dd<-spread(df2,key="課程",value=分?jǐn)?shù))1.4R語言數(shù)據(jù)處理數(shù)據(jù)類型的轉(zhuǎn)換將數(shù)據(jù)框轉(zhuǎn)換成HTML表格當(dāng)數(shù)據(jù)框中的樣本(行)和變量(列)都較多時,為了向別人展示數(shù)據(jù)框,可以將其轉(zhuǎn)換成HTML(HyperTextMarkupLanguage,超文本標(biāo)記語言)形式的表格R中有多個包可以生成HTML表格,如flextable包、reactable包、DT包、gt包、kableExtra包、huxtable包、rhandsontable包、pixiedust包等。它們不僅可以生成原始數(shù)據(jù)的HTML表格,還可以生成數(shù)據(jù)分析結(jié)果的表格,并可以根據(jù)需要將表格存為Word、ppt、image等不同格式的文檔。這里僅介紹rempsyc包提供的nice_table函數(shù)將數(shù)據(jù)框或數(shù)據(jù)分析的結(jié)果轉(zhuǎn)換flextable表格對象的方法library(rempsyc)library(dplyr)table1_1<-read.csv("C:/mydata/chap01/table1_1.csv")df<-table1_1%>%mutate(平均分?jǐn)?shù)=(統(tǒng)計學(xué)+數(shù)學(xué)+經(jīng)濟學(xué))/3)#添加平均分?jǐn)?shù)一列tab<-nice_table(df,width=0.3)#生成HTML表格,列寬為0.5tab1.4R語言數(shù)據(jù)處理生成頻數(shù)分布表——類別數(shù)據(jù)——一維列聯(lián)表頻數(shù)分布表(frequencydistributiontable)是對類別數(shù)據(jù)(因子的水平)計數(shù)或數(shù)值數(shù)據(jù)類別化(分組)后計數(shù)生成的表格由于類別數(shù)據(jù)本身就是一種分類,只要將所有的類別都列出來,然后計算出每一類別的頻數(shù),即可生成一張頻數(shù)分布表根據(jù)觀測變量的多少,可以生成一維列聯(lián)表、二維列聯(lián)表和多維列聯(lián)表一維列聯(lián)表——當(dāng)只涉及一個類別變量時,這個變量的各類別可以放在頻數(shù)分布表中“行”的位置,也可以放在“列”的位置,將該變量的各類別及其相應(yīng)的頻數(shù)列出來就是簡單頻數(shù)表,也稱一維列聯(lián)表(one-dimensionalcontingencytable)或簡稱一維表#生成在讀學(xué)位的一維頻數(shù)表tab1<-table(data1_1$在讀學(xué)位);tab1#生成頻數(shù)表prop.table(tab1)*100#將頻數(shù)表轉(zhuǎn)化成百分比表1.4R語言數(shù)據(jù)處理生成頻數(shù)分布表——類別數(shù)據(jù)——二維列聯(lián)表當(dāng)涉及兩個類別變量時,可以將一個變量的各類別放在“行”的位置,另一個變量的各類別放在“列”的位置(行和列可以互換),由兩個類別變量交叉分類形成的頻數(shù)分布表稱為二維列聯(lián)表(two-dimensionalcontingencytable),簡稱二維表或交叉表(crosstable)#生成性別與專業(yè)的二維列聯(lián)表data1_1<-read.csv("C:/mydata/chap01/data1_1.csv")attach(data1_1)#綁定數(shù)據(jù)框data1_1tab2<-table(性別,專業(yè));tab2#生成性別和專業(yè)的二維列聯(lián)表addmargins(tab2)#為列聯(lián)表添加邊際和addmargins(prop.table(tab2)*100)#將列聯(lián)表轉(zhuǎn)換成百分比表1.4R語言數(shù)據(jù)處理生成頻數(shù)分布表——類別數(shù)據(jù)——多維列聯(lián)表當(dāng)有兩個以上類別變量時,通常將一個或多個變量按“列”擺放,其余變量則按“行”擺放由多個類別變量生成的頻數(shù)分布表稱為多維列聯(lián)表(multidimensionalcontingencytable),簡稱多維表或高維表(higher-dimensionaltables)#使用ftable函數(shù)生成例1-2的多維列聯(lián)表data1_1<-read.csv("C:/mydata/chap01/data1_1.csv")tab3<-ftable(data1_1,row.vars=c("性別","專業(yè)"),col.vars="在讀學(xué)位")

#行變量為性別和專業(yè),列變量為在讀學(xué)位#為列聯(lián)表添加邊際和ftable(addmargins(table(data1_1$性別,data1_1$專業(yè),data1_1$在讀學(xué)位)))#使用vcd包中的structable函數(shù)生成例1-2的多維列聯(lián)表library(vcd)data1_1<-read.csv("C:/mydata/chap01/data1_1.csv")structable(性別+專業(yè)~在讀學(xué)位,data=data1_1)#不同表達式產(chǎn)生不同形式的多維表1.4R語言數(shù)據(jù)處理生成頻數(shù)分布表——將列聯(lián)表轉(zhuǎn)換成數(shù)據(jù)框如果得到的數(shù)據(jù)本身就是列聯(lián)表形式,為滿足自身的分析需要,也可以將列聯(lián)表轉(zhuǎn)換成數(shù)據(jù)框形式使用DescTools包中的Untable函數(shù)可以將列聯(lián)表轉(zhuǎn)化成原始數(shù)據(jù)框,使用as.data.frame函數(shù)可以將列聯(lián)表轉(zhuǎn)化成帶有類別頻數(shù)的數(shù)據(jù)框#將列聯(lián)表轉(zhuǎn)化成原始數(shù)據(jù)框mytable<-ftable(data1_1[,1:3])#選擇變量1~3生成多維列聯(lián)表df<-Untable(mytable)#將列聯(lián)表轉(zhuǎn)化成原始數(shù)據(jù)框#將列聯(lián)表轉(zhuǎn)化成帶有交叉類別頻數(shù)的數(shù)據(jù)框tab<-ftable(data1_1[1:3])#生成列聯(lián)表(也可以使用table函數(shù)生成列聯(lián)表)df<-as.data.frame(tab);df#將列聯(lián)表轉(zhuǎn)化成帶有類別頻數(shù)的數(shù)據(jù)框1.4R語言數(shù)據(jù)處理生成頻數(shù)分布表——數(shù)值數(shù)據(jù)類別化(分組)當(dāng)有兩個以上類別變量時,通常生成數(shù)值數(shù)據(jù)的頻數(shù)分布表時,需要先將其類別化,即轉(zhuǎn)化為類別(因子)數(shù)據(jù),然后再生成頻數(shù)分布表類別化的方法是將原始數(shù)據(jù)分成不同的組別,比如,將一個班學(xué)生的考試分?jǐn)?shù)分成60以下,60~70,70~80,80~90,90~100幾個區(qū)間,通過分組將數(shù)值數(shù)據(jù)轉(zhuǎn)化成有序類別數(shù)據(jù)類別化后再計算出各組別的數(shù)據(jù)頻數(shù),即可生成頻數(shù)分布表1.4R語言數(shù)據(jù)處理生成頻數(shù)分布表——數(shù)值數(shù)據(jù)類別化(分組)

1.4R語言數(shù)據(jù)處理生成頻數(shù)分布表——數(shù)值數(shù)據(jù)類別化(分組)使用base包中的cut函數(shù)、actuar包中的grouped.data函數(shù)、DescTools包中的Freq函數(shù)等均可實現(xiàn)數(shù)據(jù)分組并生成頻數(shù)分布表這里推薦使用DescTools包中的Freq函數(shù)#使用Freq函數(shù)的默認(rèn)分組(含上限值)data1_1<-read.csv("C:/mydata/chap01/data1_1.csv")tab1<-Freq(data1_1$網(wǎng)購金額)#指定組距=150(不含上限值)tab2<-Freq(data1_1$網(wǎng)購金額,breaks=c(0,150,300,450,600,750,900),right=FALSE)tab2<-data.frame(分組=tab2$level,頻數(shù)=tab2$freq,頻數(shù)百分比=tab2$perc*100,+累積頻數(shù)=tab2$cumfreq,累積百分比=tab2$cumperc*100)print(tab2,digits=4)print函數(shù)打印并確定小數(shù)位數(shù)1.4R語言數(shù)據(jù)處理充分了解變量或數(shù)據(jù)的類型在可視化中十分重要,它決定了你所面對的數(shù)據(jù)集可以畫出什么圖形明確分析目的,它決定了你需要畫出什么圖形要能夠?qū)?shù)據(jù)集進行熟練的操作,比如,如何處理向量、矩陣、數(shù)據(jù)框、因子和列表等,并熟練使用數(shù)據(jù)類型的轉(zhuǎn)換方法和生成頻數(shù)分布表的方法本章小結(jié)

本章小結(jié)可視化分析比較數(shù)值大小和差異展示數(shù)據(jù)結(jié)構(gòu)和流向展示數(shù)據(jù)分布展示變量間關(guān)系比較樣本相似性展示時間序列組合式和交互式圖形THEENDTHANKSTHEENDTHANKS2026/1/26R語言數(shù)據(jù)可視化分析賈俊平2026/1/26基于R語言數(shù)據(jù)可視化分析賈俊平2026/1/26本書特色新穎的寫作視角嚴(yán)謹(jǐn)?shù)慕M織結(jié)構(gòu)完備的繪制代碼詳盡的圖形解讀賈俊平2026/1/262.1graphics簡介基本繪圖函數(shù)圖形參數(shù)圖形顏色頁面布局打開多個窗口第2章R語言繪圖基礎(chǔ)

2.2ggplot2簡介繪圖語法圖形外觀圖形注釋圖形分面圖形組合概要R的繪圖系統(tǒng)主要有3個一是基礎(chǔ)安裝時自帶的graphics繪圖系統(tǒng)或稱graphics包,該系統(tǒng)提供了多個繪圖函數(shù),可以繪制常用的一些圖形,用于快速的數(shù)據(jù)探索二是lattice系統(tǒng)或稱lattice包,該系統(tǒng)提供了繪制網(wǎng)格圖形的高級函數(shù)三是ggplot2系統(tǒng)或稱ggplot2包,該系統(tǒng)使用獨特的繪圖語法,可繪制多種二維圖形(ggplot2包使用前需要先下載并安裝后才能使用)

本章導(dǎo)讀graphics包也稱為基礎(chǔ)繪圖統(tǒng)或傳統(tǒng)繪圖系統(tǒng),該包提供了大量的基本繪圖函數(shù),可用于快速探索數(shù)據(jù)最初安裝R軟件時,該包就已經(jīng)安裝在R中,其中的繪圖函數(shù)可以直接使用graphics包中的繪圖函數(shù)可分為兩大類:一類是高級繪圖函數(shù),這類函數(shù)可以產(chǎn)生一幅獨立的圖形;另一類是低級繪圖函數(shù),這類函數(shù)不產(chǎn)生獨立的圖形,而是在高級函數(shù)繪制的圖形上添加一些圖形元素,如圖例、注釋文本、線段、數(shù)學(xué)表達式等

graphics系統(tǒng)(包)2.1graphics簡介基本繪圖函數(shù)—高級繪圖函數(shù)—plot【例2-1】

30名學(xué)生選修R語言和Python語言課程的分?jǐn)?shù)性別專業(yè)R語言Python語言男金融9376女管理9073男金融7263……………………男金融8371男金融8675女管理83712.1graphics簡介基本繪圖函數(shù)——其他高級繪圖函數(shù)函數(shù)數(shù)據(jù)類型圖形assocplot二維列聯(lián)表關(guān)聯(lián)圖barplot數(shù)值向量;矩陣;列聯(lián)表條形圖boxplot數(shù)值向量;列表;數(shù)據(jù)框箱線圖cdplot單一數(shù)值向量;一個對象條件密度圖contour數(shù)值,數(shù)值,數(shù)值等高線圖coplot表達式條件圖curve表達式曲線dotchart數(shù)值向量;矩陣點圖fourfoldplot2×2表四折圖函數(shù)數(shù)據(jù)類型圖形hist數(shù)值向量直方圖image數(shù)值,數(shù)值,數(shù)值色陣圖matplot數(shù)值向量;矩陣矩陣列圖mosaicplot二維列聯(lián)表,N維列聯(lián)表馬賽克圖pairs矩陣;數(shù)據(jù)框散點圖矩陣persp數(shù)值,數(shù)值,數(shù)值三維透視圖pie非負(fù)的數(shù)值向量;列聯(lián)表餅圖stars矩陣;數(shù)據(jù)框星圖stem數(shù)值向量莖葉圖stripchart數(shù)值向量;數(shù)值向量列表帶狀圖sunflowerplot數(shù)值向量,因子太陽花圖symbols數(shù)值,數(shù)值,數(shù)值符號圖2.1graphics簡介基本繪圖函數(shù)——低級繪圖函數(shù)函數(shù)描述abline為圖形添加截距為a、斜率為b的直線。arrows在坐標(biāo)點(x0,y0)和(x1,y1)之間繪制線段,并在端點處添加箭頭。box繪制圖形的邊框。layout布局圖形頁面。legend在坐標(biāo)點(x,y)處添加圖例。lines在坐標(biāo)點(x,y)之間添加直線。mtext在圖形區(qū)域的邊距或區(qū)域的外部邊距添加文本。points在坐標(biāo)點(x,y)處添加點。polygon沿著坐標(biāo)點(x,y)繪制多邊形。polypath繪制由一個或多個連接坐標(biāo)點的路徑組成的多邊形。rasterlmaga繪制一個或多個網(wǎng)格圖像。rect繪制一個左下角在(xleft,ybottom)處、右上角在(xright,ytop)處的矩形。rug添加地毯圖。segments在坐標(biāo)點(x0,y0)和(x1,y1)之間繪制線段。text在坐標(biāo)點(x,y)處添加文本。title為圖形添加標(biāo)題。xspline根據(jù)控制點(x,y)繪制x樣條曲線(平滑曲線)。低級繪圖函數(shù)不以產(chǎn)生獨立的圖形主要為現(xiàn)有的圖形添加新的元素,如添加線段、標(biāo)題、圖例、注釋文本、多邊形、坐標(biāo)軸等2.1graphics簡介基本繪圖函數(shù)——plot與低級函數(shù)的結(jié)合使用plot函數(shù)與低級繪圖函數(shù)的結(jié)合應(yīng)用2.1graphics簡介圖形參數(shù)graphics包中的每個繪圖函數(shù)都有多個參數(shù),圖形的輸出是由這些參數(shù)控制的繪圖時,若不對參數(shù)做任何修改,則函數(shù)使用默認(rèn)參數(shù)繪制圖形。如果默認(rèn)設(shè)置不能滿足需要,可對其進行修改,以改善圖形輸出繪制圖形時可根據(jù)需要調(diào)整參數(shù),根據(jù)圖形變化決定參數(shù)是否要修改以及如何修改。不同函數(shù)具有不同的參數(shù)及參數(shù)設(shè)置,這樣的參數(shù)屬于函數(shù)的特定參數(shù)有些參數(shù)在不同函數(shù)中都可以使用,這樣的參數(shù)屬于繪圖函數(shù)的標(biāo)準(zhǔn)參數(shù)有的標(biāo)準(zhǔn)參數(shù)在不同函數(shù)中的作用是不同的,比如,col參數(shù)在有些函數(shù)中用于設(shè)置點、符號等的顏色,但在條形圖、直方圖、箱線圖等函數(shù)中,col參數(shù)用來填充條、箱子的顏色,使用時需要注意。除繪圖函數(shù)本身的參數(shù)外,graphics包中繪制函數(shù)的參數(shù)也可以使用par函數(shù)來控制。使用help(par)可以查閱詳細(xì)信息2.1graphics簡介圖形參數(shù)par函數(shù)的常用參數(shù)及其對應(yīng)的數(shù)字2.1graphics簡介圖形顏色使用colors()函數(shù)可以查看R全部657種顏色的名稱列表使用graphics包繪圖時,設(shè)置繪圖顏色的參數(shù)主要有3個:col、bg和fg。col主要用于設(shè)置繪圖區(qū)域中繪制的數(shù)據(jù)符號、線條、文本等元素的顏色;bg用于設(shè)置圖形的前景顏色,如坐標(biāo)軸、圖形的邊框等;fg用于設(shè)置圖形的背景顏色,如圖形區(qū)域的顏色等除以上名稱外,要使用多種顏色繪圖時,也可以使用grDevices包提供的調(diào)色板函數(shù),如rainbow、heat.colors、col=colors、terrain.colors、topo.colors、cm.colors、gray.colors等。繪圖時可以將顏色設(shè)置為這些函數(shù),如col=colors(256)、col=rainbow(n,start=0.4,end=0.5)、col=heat.colors()等使用RColorBrewer包中的display.brewer.all函數(shù)可以查看R的調(diào)色板,其中包括連續(xù)型部分(單色系)、離散型部分(多色系)和極端值部分(雙色系)2.1graphics簡介圖形顏色——調(diào)色板——例題分析使用RColorBrewer包中的display.brewer.all函數(shù)可以查看R的調(diào)色板,也可以只展示其中的連續(xù)型部分、離散型部分或極端值部分16進制顏色代碼不同調(diào)色板繪制的條形圖2.1graphics簡介頁面布局——par函數(shù)和layout函數(shù)析

2.1graphics簡介打開多個繪圖窗口用dev.new()函數(shù)打開一個新的繪圖窗口;用函數(shù)dev.off()關(guān)閉新的繪圖窗口2.1graphics簡介繪圖語法ggplot2包是由HadleyWickham(2009)編寫的繪圖包該包提供了一種基于語法的圖形繪制系統(tǒng),因其圖形漂亮、語法規(guī)范受到人們廣泛喜愛用ggplot2包繪圖十分方便,尤其適合繪制二維圖形與傳統(tǒng)繪圖包graphics相比,不需要太多的細(xì)節(jié)設(shè)置就可以繪制出滿意的圖形基于ggplot2開發(fā)的繪圖包也有很多,如ggiraphExtra、ggpubr、tidyplots等,其中的函數(shù)兼容ggplot2的語法,而參數(shù)設(shè)置相對較少,方便快速繪圖2.2ggplot2簡介繪圖語法【例2-1】2.2ggplot2簡介繪圖語法ggplot2的繪圖過程類似于創(chuàng)作一幅油畫的過程:先準(zhǔn)備畫布、顏料等原材料,然后構(gòu)思畫面,再一層一層繪制ggplot2繪圖使用圖層(layer)概念,各圖層之間用“+”連接,后面的圖層疊加在前面的圖層之上。圖層包括數(shù)據(jù)(data)、映射(mapping)、幾何對象(geom_xx)、統(tǒng)計變換(stat_xx)、標(biāo)度(scale)、坐標(biāo)系(coord)、分面(facet)、主題(theme)等圖層可分為數(shù)據(jù)繪圖和細(xì)節(jié)美化兩大部分。繪圖代碼的基本結(jié)構(gòu)大致如下2.2ggplot2簡介#ggplot2繪圖代碼的基本結(jié)構(gòu)ggplot(data,

aes())

+#基礎(chǔ)圖層,不生成圖形元素(必需)

geom_xxx()

+

#幾何圖層,生成圖形元素(必需)

scale_xxx()

+

#標(biāo)度調(diào)整,如顏色、坐標(biāo)軸等(可選)

coord_xxx()

+

#坐標(biāo)變換,默認(rèn)為笛卡兒坐標(biāo)系(可選)

facet_xxx()

+

#圖形分面,按因子或變量繪制面板圖形(可選)

theme_xxx()

+

#主題設(shè)置,用于調(diào)整圖形細(xì)節(jié)(可選)

labs()

#添加標(biāo)簽,如圖形標(biāo)題、坐標(biāo)軸標(biāo)題等(可選)繪圖語法首先,使用ggplot()函數(shù)創(chuàng)建圖形對象。該函數(shù)有data和mapping兩個主要參數(shù),用于定義繪圖時使用的數(shù)據(jù)以及圖形屬性映射。其中data的數(shù)據(jù)格式為數(shù)據(jù)框;mapping為變量的屬性映射,主要使用aes函數(shù)來映射變量x和y的位置(坐標(biāo)軸),也以用來控制顏色(color)、大?。╯ize)或形狀(shape)、填充變量等其次,使用geom_xxx()函數(shù)用于創(chuàng)建圖形。geom_xxx()下劃線后面指定要繪制的圖形2.2ggplot2簡介可選部分主要用于圖形的修改和美化等設(shè)置比如,使用標(biāo)度函數(shù)scale_xxx()來設(shè)置顏色、坐標(biāo)軸等;使用coord_xxx()函數(shù)將直角坐標(biāo)轉(zhuǎn)換成極坐標(biāo)、將x軸和y軸互換等;使用theme_xxx()函數(shù)設(shè)置圖形主題;使用labs()函數(shù)設(shè)置圖形標(biāo)題,等等圖形外觀——坐標(biāo)軸設(shè)置圖形外觀主要是指圖形中各種元素的設(shè)置圖形元素(graphicelement)包括兩大類表示數(shù)據(jù)的元素,如條形圖中的條、散點圖中的點、折線圖中的線等不表示數(shù)據(jù)的元素(非數(shù)據(jù)的元素),如圖形的坐標(biāo)軸(axis)、標(biāo)簽(label)、標(biāo)題(title)、圖例(legend)、主題(theme)等本節(jié)只介紹圖形中非數(shù)據(jù)元素的設(shè)置,數(shù)據(jù)元素的設(shè)置將在以后各章的繪圖中得以體現(xiàn)2.2ggplot2簡介圖形外觀——坐標(biāo)軸設(shè)置坐標(biāo)軸包括坐標(biāo)軸刻度(如刻度線的位置和數(shù)量)、數(shù)值范圍、刻度標(biāo)簽(如數(shù)值變量刻度位置表示的數(shù)值或類別變量刻度位置表示的類別名稱)、坐標(biāo)軸標(biāo)題(坐標(biāo)軸表示的變量名稱)等通常情況下,ggplot2默認(rèn)設(shè)置的坐標(biāo)軸基本上能滿足需要,但有時也要做適當(dāng)修改。比如,修改坐標(biāo)軸刻度線的數(shù)量和位置,刻度標(biāo)簽字體大小和角度,x軸和y軸的數(shù)值范圍,坐標(biāo)軸標(biāo)題的字體大小、順序和擺放方式,等等2.2ggplot2簡介圖形外觀——坐標(biāo)軸設(shè)置圖(a)是默認(rèn)繪制的類別軸(本圖為x軸)順序是R語言、Python語言,使用scale_x_discrete(limits=c())可根據(jù)需改變類別順序圖(b)是設(shè)置coord_flip()使坐標(biāo)軸互換,同時,將x軸(類別軸)標(biāo)簽旋轉(zhuǎn)90度圖(c)使用theme(axis.title.x=element_blank())移除y軸標(biāo)簽,要移除x軸標(biāo)簽使用類似的設(shè)置;設(shè)置theme(axis.ticks.y=element_blank())移除y軸的刻度線圖(d)使用theme(axis.ticks=element_blank())移除所有的刻度線,將坐標(biāo)軸標(biāo)簽旋轉(zhuǎn)是為了改變標(biāo)簽的角度。當(dāng)標(biāo)簽較多時,也可以設(shè)置scale_x_discrete(guide=guide_axis(n.dodge=2))使x軸標(biāo)簽排成為2行。使用xlim()可以數(shù)值x軸的數(shù)值范圍。設(shè)置x軸數(shù)值范圍時,函數(shù)會在該范圍內(nèi)設(shè)置坐標(biāo)軸刻度,重新設(shè)置刻度線可以使用scale_x_continuous(limits=c(),breaks=c())2.2ggplot2簡介圖形外觀——標(biāo)題設(shè)置ggplot2繪制的圖形不添加標(biāo)題,使用ggtitle("")函數(shù)可以添加標(biāo)題也可以使用labs(title="")函數(shù)添加標(biāo)題使用主題函數(shù)temem可以設(shè)置標(biāo)題的字體大小等2.2ggplot2簡介圖形外觀——圖例設(shè)置默認(rèn)情況下,ggplot2繪制的圖形會自動添加圖例,并將圖例放在圖形的最右側(cè)使用函數(shù)theme()可以修改圖例,包括刪除圖例、改變圖例的位置、設(shè)置圖例字體的大小等使用guides()函數(shù)可以修改圖例標(biāo)題、改變圖例的排放方式等2.2ggplot2簡介圖形外觀——標(biāo)簽設(shè)置在可視化過程中,有時會涉及多個變量,有些變量名稱可能較長,這時產(chǎn)生的坐標(biāo)軸標(biāo)簽或圖例標(biāo)簽就可能會重疊或相互遮蓋,不僅難以識別,也影響影響美觀有些可以通過標(biāo)簽角度旋轉(zhuǎn)的辦法解決,有些則需要另行處理2.2ggplot2簡介圖形外觀——標(biāo)簽設(shè)置在有些圖形中,需要在圖中添加數(shù)據(jù)標(biāo)簽或數(shù)據(jù)對應(yīng)的名稱標(biāo)簽等使用ggplot2包中的geom_text函數(shù)可以為圖形添加標(biāo)簽,但當(dāng)標(biāo)簽較多時會產(chǎn)生重疊或相互遮蓋。這時可以使用ggrepel包中的geom_text_repel函數(shù)替代geom_text函數(shù)添加標(biāo)簽,以避免標(biāo)簽重疊為條形圖填充標(biāo)簽,可使用ggfittext包中的geom_bar_text或geom_fit_text函數(shù)為圖形添加曲線文本標(biāo)簽,可使用geomtextpath包中的函數(shù),等等2.2ggplot2簡介圖形外觀——主題設(shè)置使用theme來控制所有非數(shù)據(jù)顯示的完整主題函數(shù)默認(rèn)使用theme_grey()或theme_gray()主題,即帶有灰色背景和白色網(wǎng)格線的標(biāo)志性ggplot2主題可選主題有theme_bw(),經(jīng)典的黑白主題,;theme_minimal(),沒有背景注釋的簡約主題;theme_classic()外觀經(jīng)典的主題,有x和y軸線條,沒有網(wǎng)格線;theme_void()完全空的主題(無主題),等等2.2ggplot2簡介圖形外觀——主題設(shè)置ggthemes包提供了20多種ggplot2圖形的擴展主題2.2ggplot2簡介圖形注釋為圖形添加注釋的函數(shù)主要是annotate,它可以為圖像添加多種不同的注釋信息2.2ggplot2簡介圖形分面圖形分面(facet)就是要將多個子圖排列成矩陣網(wǎng)格的形式,排列后的多個子圖形成一幅獨立的圖形使用facet_wrap函數(shù)或facet_grid函數(shù)可以對圖形進行分面2.2ggplot2簡介圖形組合圖形分面是將多幅同類圖形排列成網(wǎng)格形式,其中的格子大小在多數(shù)情況下是相同的。圖形組合則是將多幅獨立的不同圖形組合成R×C的網(wǎng)格形式,其中格子大小可以相同,也可以不相同要將ggplot2繪制的多幅獨立圖形組合成一幅圖形,可以使用patchwork包中的算法組合、gridExtra包中g(shù)rid.arrange函數(shù)和arrangeGrob函數(shù)、cowplot包中的plot_grid函數(shù)等。patchwork是用于ggplot2及其擴展包的圖形對象的拼圖包,它使用運算符(”+”、“|”、“/”等符號組合圖形)來拼圖,使用簡單,功能強大,可根據(jù)需要組合各種圖形。與其他圖形組合方法相比,該包的組合效果更好,尤其是對于復(fù)雜圖形的組合2.2ggplot2簡介圖形組合2.2ggplot2簡介patchwork包組合的圖形常用函

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論