版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
4.1R語言基礎(chǔ)繪圖4.2ggplot2繪圖包4.3增強型繪圖plotly包4.4交互式動態(tài)網(wǎng)頁Shiny包第4章
R語言可視化R語言可視化R語言繪圖基礎(chǔ)ggplot2繪圖包ggplot圖形語法、ggplot繪圖函數(shù)增強型繪圖plotly包交互式動態(tài)網(wǎng)頁Shiny包高級繪圖:散點圖、直方圖、箱線圖、條形圖星圖、點圖、餅圖、QQ圖、莖葉圖等低級繪圖、交互式繪圖函數(shù)圖形參數(shù)、圖形保存R繪圖簡單易用、靈活性強R繪制的常用圖形繪制地圖maps包實例ggmap+baidumap中南大學新校區(qū)繪制3D立方體rgl包實例plot3D包實例繪制詞云(WordCloud)wordcloud包實例wordcloud2包實例在R中有三種繪圖函數(shù):高級(High-level)繪圖函數(shù):創(chuàng)建一個新的圖形。典型的是plot函數(shù)。低級(Low-level)繪圖函數(shù):在現(xiàn)有的圖形上添加元素,對圖形進行進一步細化和解釋說明。低水平作圖函數(shù)有points、legend等函數(shù)。交互式(Interactive)繪圖函數(shù)。如rggobi
軟件包中的ggobi函數(shù)。4.1.R語言繪圖基礎(chǔ)4.1.1
高級繪圖函數(shù)
plot()是泛型函數(shù),對于不同的數(shù)據(jù)可以繪制出不同的圖形。一個向量參數(shù)的plot(x)函數(shù)一般用于繪制散點圖plot()函數(shù)JS<-
read.csv('JSdata.csv')plot(JS$height)兩個向量參數(shù)的plot(x,y)函數(shù),主要繪制標準的x-y圖形plot()函數(shù)plot(JS$height,JS$weight)當我們對整個數(shù)據(jù)集使用plot命令而不選擇任何特定列,則繪制散點圖矩陣plot()函數(shù)plot(JS)plot()函數(shù)plot(cars,font.lab=2,type="p")plot(cars,font.lab=2,type="l")plot(cars,font.lab=2,type="b")plot(cars,font.lab=2,type="o")plot(cars,font.lab=2,type="h")plot(cars,font.lab=2,type="s")plot(cars,font.lab=2,type="S")可用type選項來指定不同的曲線類型。曲線類型plot()函數(shù)標簽、標題和顏色我們可以標記X(xlab)和Y軸(ylab),并為我們的繪圖指定一個標題(main)。此外,我們還利用(col)為繪圖賦予顏色plot(JS$height,JS$weight,xlab="身高",ylab="體重",main="教師身高及體重分布情況",col="red")顏色名稱:white,black,red,yellow,…數(shù)字代號:1,2,3,4,5,6,7,8顏色函數(shù):rainbow,heat.colors,terrain.colors,topo.colors,cm.colors,colors()col符號參數(shù)pch符號參數(shù):pch=1:25plot()函數(shù)參數(shù)功能adj控制關(guān)于文字對齊方式bg背景色bty圖形邊框形狀cex符號和文字大小,cex.axis,cex.lab,cex.main,cex.subfont文字字體,font.axis,font.lab,font.main,font.sublas坐標軸刻度數(shù)字標記方向lty線條樣式,1:實線;2:虛線;3:點線;4:點虛線;5:長虛線lwd線的寬度mar圖形邊空的大小pty繪圖區(qū)域類型其它常用繪圖參數(shù)在R軟件中,用函數(shù)hist()畫出樣本的直方圖,其格式為hist(x)或hist(x,breaks="Sturges",freq=NULL,probability=!freq,include.lowest=TRUE,right=TRUE,density=NULL,angle=45,col=NULL,border=NULL,main=paste("Histogramof",xname),xlim=range(breaks),ylim=NULL,xlab=xname,ylab,axes=TRUE,plot=TRUE,labels=FALSE,nclass=NULL,...)直方圖其中x是由樣本構(gòu)成的向量.breaks規(guī)定直方圖的組距,由以下幾種形式給出:向量,給出直方圖的起點、終點與組距.數(shù),定義直方圖的組距.字符串(缺省值為“Sturges”).函數(shù),計算組距的寬度.freq是邏輯變量:NULL空(缺省值);TRUE繪出頻率直方圖;counts繪出頻率直方圖;FALSE繪出密度直方圖probability是邏輯變量與freq相反,是與S-PLUS相兼容的參數(shù),
TRUE繪出密度直方圖;FALSE繪出頻率直方圖col表示直方圖中填充的顏色.plot是邏輯變量:TRUE表示給出直方圖;FALSE表示列出繪出直方圖的各種結(jié)果(并不繪圖).
利用Sturges公式計算Bin建議
個數(shù)ceiling(log2(length(x)+1),后利用pretty函數(shù)給出真正bin個數(shù)>JS=read.csv(“JSdata.csv",header=T)>hist(JS$height)直方圖#break:指定一個向量,給出不同的斷點hist(JS$height,breaks=c(140,160,180,200))#顯示的是頻率(=頻數(shù)/總數(shù))>hist(JS$height,freq=F)>hist(JS$height,col=rainbow(nclass.Sturges(JS$height)+3))莖葉圖與直方圖比較,莖葉圖(stem-and-leaf)更能細致地看出數(shù)據(jù)分布的結(jié)構(gòu).R中莖葉圖stem()函數(shù)的使用方法是
stem(x,scale=1,width=80,atom=1e-08)其中x是數(shù)據(jù)向量.scale控制繪出莖葉圖的長度.width繪圖的寬度.atom是容差.下面做出JS中salary的莖葉圖stem(JS$salary)207的十位為20個位為7.以個位為單位,將207用|號分開
207→20|7每一個數(shù)都可以這樣處理.因此,莖葉圖將十位數(shù)0,2,4,6按縱列從上到下排列,在縱列右側(cè)從上到下畫一豎線,再在豎線右側(cè)寫上原始數(shù)據(jù)的相應的個數(shù).在莖葉圖中,縱軸為測定數(shù)據(jù),橫軸為數(shù)據(jù)頻數(shù).數(shù)據(jù)的十位數(shù)部分表示“莖”,作為縱軸的刻度;個位數(shù)部分作為“葉”,顯示頻數(shù)的個數(shù),作用與直方圖的直方類似.箱線圖能直觀明了地識別數(shù)據(jù)批中的異常值,判斷數(shù)據(jù)的偏態(tài)和尾重情況.在R軟件中,用boxplot()函數(shù)作箱線圖.boxplot(JS$salary)箱線圖上(Q3)下(Q1)四分位數(shù)分別確定出中間箱體的頂部主底部.箱體中間的粗線是中位數(shù)所在的位置.由箱體向上下伸出的垂直部分稱為“觸須”,表示數(shù)據(jù)的散布范圍,最遠點為1.5倍四分位數(shù)間距.超出此范圍的點稱為異常值點,異常值點用“?”號表示boxplot()函數(shù)的使用方法有三種形式,第一種格式為boxplot(x,...)其中x是由數(shù)據(jù)構(gòu)成的數(shù)值型向量,或者是列表,或者是數(shù)據(jù)框.上面例子的使用方法就是這種形式.boxplot第二種形式為boxplot(formula,data=NULL,...,subset,na.action=NULL)其中formula是公式,如y?grp,這里y是由數(shù)據(jù)構(gòu)成的數(shù)值型向量,grp是數(shù)據(jù)的分組,通常是因子.data是數(shù)據(jù)結(jié)構(gòu).例:按職稱分組繪制出各組收入情況boxplot(JS$salary~JS$title,col=rainbow(length(unique(JS$title))))第三種形式為boxplot(x,...,range=1.5,width=NULL,varwidth=FALSE,
notch=FALSE,outline=TRUE,names,plot=TRUE,border=par(“fg”),col=NULL,log=“”,pars=list(boxwex=0.8,staplewex=0.5,outwex=0.5),horizontal=FALSE,add=FALSE,at=NULL)其中x的意義與第一種情況相同.
range是“觸須”的范圍(缺省值為1.5).
notch是邏輯變量,當notch=TRUE(缺省值為FALSE)時,畫出的箱線圖帶有切口.
outline是邏輯變量,當outline=FALSE(缺省值為TRUE)時,不標明異常值點.
col是顏色變量,附給不同的值,繪出不同顏色的箱線圖.
horizontal是邏輯變量,當horizontal=TRUE(缺省值為FALSE)時,將把箱線圖繪成水平狀.
add是邏輯變量,當add=TRUE時,在原圖上畫圖;否則(FALSE,缺省值)替換上一張圖.#帶切口的箱線圖boxplot(JS$height,notch=T)#不標明異常值點boxplot(JS$salary,outline=F)#水平狀的箱線圖boxplot(JS$salary,horizontal=T)箱線圖示例利用boxplot()函數(shù)還可以畫出多組數(shù)據(jù)的箱線圖,進而比較各組數(shù)據(jù)的的中位數(shù)、尾長、異常值、分布區(qū)間等形狀信息。QQ圖
R函數(shù)qqnorm()和qqline()提供了畫正態(tài)QQ圖和相應直線的方法.其使用方法是qqnorm(y,ylim,main="NormalQ-QPlot",xlab="TheoreticalQuantiles",ylab="SampleQuantiles",plot.it=TRUE,
datax=FALSE,...)qqline(y,datax=FALSE,...)下列代碼繪出JS數(shù)據(jù)中身高的正態(tài)QQ圖,并從直觀上鑒別樣本數(shù)據(jù)是否來自正態(tài)分布總體.qqnorm(JS$height)qqline(JS$height,col="red")執(zhí)行后繪出正態(tài)QQ圖:從正態(tài)QQ圖(來看,樣本的數(shù)據(jù)基本上可以看成來自正態(tài)總體.對于對數(shù)正態(tài)、指數(shù)等分布(ggplot2
)也可以作相應的QQ圖,用以鑒別樣本數(shù)據(jù)是否來自某一類型的總體分布.條形圖主要用來展示不同分類(橫軸)下某個數(shù)值型變量(縱軸)的取值。R使用barplot()函數(shù)來創(chuàng)建條形圖,基本語法是-barplot(H,
xlab,
ylab,
main,
names.arg,
col)
H
-是包含條形圖中使用的數(shù)值的向量或矩陣。xlab
-是x軸的標簽。ylab
-是y軸的標簽。main
-是條形圖的標題。names.arg
-是在每個欄下顯示的名稱向量。col
-用于給圖中的圖條給出顏色。條形圖(barplot)barplot(table(JS$title),main="職稱分布",xlab="職稱",ylab="人數(shù)",col=rainbow(4))條形圖橫軸上的數(shù)據(jù)是離散而非連續(xù)的。比如想展示兩商品的價格隨時間變化的走勢,則不能用條形圖,因為時間變量是連續(xù)的;有時條形圖的值表示數(shù)值本身,但也有時是表示數(shù)據(jù)集中的頻數(shù),不要引起混淆。#StackedBarPlotbarplot(table(JS$title,JS$sex),main="職稱分布",ylab="人數(shù)",col=rainbow(4))legend("topright",fill=rainbow(length(unique(JS$title))),legend=(rownames(table(JS$title,JS$sex))))dotchart()構(gòu)造數(shù)據(jù)x的點圖.基本語法:dotchart(x,labels=NULL,groups=NULL,gcolor=par("fg"),color=par("fg"))在點圖中,x要么是數(shù)值向量,要么是矩陣.labels表示每個點的標簽向量;groups表示一個分組變量,表示如何對x的元素進行分組。gcolor表示組標簽和值顏色;color用于點和標簽的顏色。點圖#1940年弗吉尼亞州死亡率>dotchart(VADeaths,main="DeathRates")在R中餅圖可以由以下函數(shù)創(chuàng)建:pie(x,labels=names(x),radius=0.8,main=“NULL”,col=NULL,clockwise=FALSE,density=NULL,angle=45,lty=NULL,border=NULL,edges=200,….)x
是非負的數(shù)值向量,表示每個扇形的面積。labels代表各扇形面積標簽的字符型向量。radius
表示餅圖的圓的半徑,特別是在字符標簽過長的情況尤其適用。main
是用來表示圖標的標題的。col
是表示每個扇形的顏色,相當于調(diào)色板。餅圖下面使用JS數(shù)據(jù)繪制餅圖pie(table(JS$sex))pie(table(JS$title),labels=unique(JS$title),main="按職稱",col=terrain.colors(length(table(JS$title))))#添加餅圖每個扇形的百分比以及圖表圖例>areap=table(JS$title)>piepercent<-round(100*areap/sum(areap),1)>piepercent<-paste(piepercent,"%",sep="")>pie(areap,labels=piepercent,main=“按職稱”,
col=rainbow(length(areap)))>legend("topright",names(areap),cex=0.8,fill=rainbow(length(areap)))顯示多變量數(shù)據(jù)R軟件為顯示多變量數(shù)據(jù)提供了兩個非常有用的函數(shù).一個是pairs()函數(shù),當X是矩陣或數(shù)據(jù)框時>pairs(X)繪出關(guān)于矩陣各列的散點圖.例如,以JS的數(shù)據(jù)框為例,>pairs(JS[,6:8])繪出的圖形與plot(JS[,6:8])相同.
另一個函數(shù)是coplot().當有三、四個變量時,coplot()可以將散點圖畫的更細.假設(shè)a和b是數(shù)值向量,并且c是向量或因子(所有變量具有相同的長度),則
>coplot(a?b|c)繪出在給定c值下,a關(guān)于b的散點圖.仍然以JS的數(shù)據(jù)為例,
>coplot(JS$weight~JS$height|JS$title)繪出了按職稱給出的體重與身高的散點圖從下往上,從左往右副教授助教教授講師從左往右>coplot(weight~height|title,data=JS,row=1)對于四個變量a,b,c,d,還可以有如下命令>coplot(a?b|c+d)即按c、d劃分下,a關(guān)于b的散點圖.>coplot(weight~height|title+sex,data=JS)pairs()函數(shù)只能顯示雙向關(guān)系,coplot()函數(shù)能夠說明三向甚至四向關(guān)系,它特別于適合觀察當給定其他預測變量時,反應變量如何根據(jù)一個預測變量變化。數(shù)據(jù)可視化中,如果數(shù)據(jù)是三維或者不多于六維,那么星圖就是反映數(shù)據(jù)分布的最佳圖像。R里面提供了繪制星圖的函數(shù)——stars()函數(shù)。每一個星圖用線段離中心的長度來表示變量值的大小,用于展示多個變量的個體,每個變量的圖形相互獨立,即每個角都有一條軸線與中心點連接起來的軸線,分別對應了數(shù)據(jù)的維度,數(shù)值越大,軸線越長,畫出來的星圖也就越大,由于星圖整幅圖形看起來像星星一樣,因此稱之為星圖。星圖
stars()函數(shù)基本語法:stars(x,full=TRUE,scale=TRUE,radius=TRUE,labels=dimnames(x)[[1]],locations=NULL,nrow=NULL,ncol=NULL,len=1,key.loc=NULL,key.labels=dimnames(x)[[2]],...)x
多維數(shù)據(jù)矩陣或數(shù)據(jù)框,每一行數(shù)據(jù)將繪制一個星圖;full決定圖形是圓形還是半圓,默認為TRUE
scale是否將數(shù)據(jù)標準化到區(qū)間[0,1],默認為TRUE,radius是否畫出半圓半徑,也就是星圖內(nèi)部的那些線段,默認為TRUElabels每個星圖個體的名稱,默認為數(shù)據(jù)的行名下面使用JS數(shù)據(jù)繪制星圖stars(JS[,6:8])#如果不需要星圖內(nèi)部的那些小線段的話,那就設(shè)置radius為FALSE.stars(JS[,6:8],radius=F)#只需要顯示每個星圖的一半,只需要將參數(shù)full設(shè)置為FALSE..stars(JS[,6:8],full=F)#給每個塊加顏色.stars(JS[,6:8],draw.segments=TRUE)#線條加色.僅需對col.lines參數(shù)進行設(shè)置,僅當draw.segments為FALSE時才有效。對前30行數(shù)據(jù)加色stars(JS[,6:8],draw.segments=FALSE,col.lines=c(1:30))4.1.2
低級繪圖函數(shù)
低級繪圖函數(shù):本身不具備圖形繪制能力,只是在已有圖形基礎(chǔ)上添加元素。函數(shù)名功能points(x,y)添加點,散點圖lines(x,y)添加線,線text(x,y,labels,…)在(x,y)處添加用labels指定的文字arrows()同上,但添加箭頭abline(a,b)繪制斜率為b和截距為a的直線abline(h=y)在縱坐標y處畫水平線abline(v=x)在橫坐標x處畫垂直線abline(lm.obj)畫出lm.obj確定的回歸線rect(x1,y1,x2,y2)繪制長方形polygon(x,y)繪制連接各x,y坐標確定的點的多邊形legend(x,y,legend)在點(x,y)處添加圖例,說明內(nèi)容由legend給定title()添加標題,也可添加一個副標題axis(side,vect)畫坐標軸box()在當前的圖上加邊框可使用expression()函數(shù)向圖形添加簡單的數(shù)學符號或公式text()、axis()、title()、legend()等使用字符串作為參數(shù)的位置均可用expression()函數(shù)和latex表達式代替。4.1.3
交互式繪圖函數(shù)R還提供了允許用戶使用鼠標提取或添加信息到繪圖的功能。其中最簡單的是locator()函數(shù)plot(1:10)text(locator(1),"locator真厲害!",cex=2,col="red")另外一個常見的交互式函數(shù)是identify()函數(shù)。x=1:10y=x^2name=letters[1:10]plot(x,y)identify(x,y,labels=name,plot=TRUE)##[1]8繪制一個簡單圖形后用鼠標點擊8號點(對應標號為字母h)R提供了大量的圖形參數(shù)來控制線條樣式、顏色、圖形排列和文本對齊等內(nèi)容。首先需要了解R繪圖所占的區(qū)域。一般來說,R繪圖所占的區(qū)域,被分成外圍邊距(outermargins)和繪圖區(qū)域兩大部分,其中繪圖區(qū)域又包括圖形區(qū)(figureregion)和繪制區(qū)(plotregion)兩個區(qū)域4.1.4
使用圖形參數(shù)坐標軸標簽、坐標軸名稱、圖片標題是在圖中白色區(qū)域,主要的圖形在plotregion,軸和box在虛線處。外圍邊距一般默認為0。在坐標軸標簽很長等情況下使用。par是設(shè)置全局繪圖參數(shù)的函數(shù)#不帶參數(shù)的`par`返回當前圖形設(shè)備的參數(shù)列表par()#設(shè)置圖形顏色和直線類型等參數(shù)par(col=4,lty=2)使用par()函數(shù)設(shè)置圖形參數(shù)會永久更改參數(shù)的值,從某種意義上說,所有將來對圖形函數(shù)的調(diào)用都將受到新值的影響。par常用參數(shù)有:mfcol:mfcol=c(3,2):3行2列分割圖形界面。mfrow:mfrow=c(2,4),以行的方式分割圖形界面,2行4列。以行的方式分割圖形界面。mfg:mfg=c(2,2,3,2):圖片在3行2列圖形界面中第二行,第二列的位置。mar=c(a,b,c,d):設(shè)置plotregion與figureregion底部、左邊、上部、右邊的距離,單位英寸。mai=c(a,b,c,d):設(shè)置plotregion與figureregion底部、左邊、上部、右邊的距離,單位是文本行數(shù)。mgp=c(a,b,c):三個坐標軸成分位置,軸文本標記單位記號標記和軸位置與軸線距離;單位是文本行。4.1.5
圖形保存R語言保存圖片大致分為兩種方式:(1)通過代碼命令保存。如果一次要循環(huán)畫出多張圖片,建議通過代碼命令保存。R支持的格式包括pdf、postscript、xfig、bitmap、pictex、cairo_pdf,cairo_ps、svg、png、jpeg、bmp、tiff等。RGui圖形保存
輸出到文件pdf,postscript,xfig,bitmap,pictex,cairo_pdf,svg,png,jpeg,bmp,tiff>pdf("plot.pdf",width=4,height=4)>png("plot.png",width=400,height=600)>dev.off()#繪制完圖形后關(guān)閉圖形設(shè)備在RGui,點擊鼠標右鍵,通過菜單命令保存圖形(2)借助RGUI或RStudio軟件保存RStudio圖形保存
使用交互窗口中的export按鈕4.2ggplot2繪圖包ggplot2是2005年由HadleyWickham創(chuàng)建的一個十分強大的可視化R包。ggplot2包基于圖形語法原理,吸收了R基礎(chǔ)畫圖和lattice畫圖的優(yōu)勢,避免其不足?!鲇脩裟茉诟橄髮用嫔峡刂茍D形,使創(chuàng)造性繪圖更容易■采用圖層的設(shè)計方法,有利于結(jié)構(gòu)化思維■圖形美觀,同時避免繁瑣細節(jié)Plot(圖)=data(數(shù)據(jù)集)+Aesthetics(美學映射)+Geometry(幾何對象)data:數(shù)據(jù)集,主要是dataframe;Aesthetics:美學映射,比如將變量映射給x,y坐標軸,或者映射給顏色、大小、形狀等圖形屬性;Geometry:幾何對象,比如柱形圖、直方圖、散點圖、線圖、密度圖等。ggplot2繪圖理念
qplot()函數(shù):顧名思義,能快速對數(shù)據(jù)進行可視化分析。它的用法和Rbase包的plot函數(shù)很相似,方便熟悉plot的用戶使用ggplot2.ggplot()函數(shù)是ggplot2包的核心繪圖函數(shù)。隨著ggplot()的使用越來越簡單,快速繪圖qplot()函數(shù)目前已經(jīng)很少有人使用.下面用JSdata.csv數(shù)據(jù)集介紹ggplot()函數(shù)用法。JS=read.csv("JSdata.csv",header=T)1.在添加幾何圖層之前,下面操作只繪制空白的ggplot繪圖邊框,不會繪制任何圖形。ggplot(JS)#只知道數(shù)據(jù)名稱.ggplot(JS,aes(x=height))#只知道X軸,Y軸通過相應的幾何參數(shù)指定.ggplot(JS,aes(x=height,y=weight))#知道X軸和Y軸.ggplot(JS,aes(x=height,color=title))#不同的title變量賦值顏色不同aes表示美學參數(shù)。ggplot2認為X軸和Y軸以及顏色、大小、形狀、填充等屬于美學。使用數(shù)據(jù)框數(shù)據(jù):數(shù)據(jù)框可以用來存儲數(shù)值、字符串、因子等不同類型等數(shù)據(jù);把數(shù)據(jù)放在同一個R數(shù)據(jù)框?qū)ο笾锌梢员苊馐褂眠^程中數(shù)據(jù)關(guān)系的混亂;數(shù)據(jù)外觀的整理和轉(zhuǎn)換方便。Plot(圖)=data(數(shù)據(jù)集)+Aesthetics(美學映射)+Geometry(幾何對象)
ggplot空白圖2.添加geom幾何圖層geom_point和geom_line后ggplot(JS,aes(x=height,y=weight,color=title))+geom_point()+geom_line()#添加散點圖和趨勢線由于X軸、Y軸和顏色是在ggplot設(shè)置本身中定義的,因此這兩層繼承了這些aes參數(shù)。當然,也在幾何圖層中自行指定這些aes參數(shù)ggplot(JS)+geom_point(aes(x=height,y=weight,color=title))+geom_line(aes(x=height,y=weight,color=title))這里,ggplot2中直接用數(shù)據(jù)框中的分類列變量來決定圖形元素的外觀,這個過程在ggplot2中稱為映射(mapping),無需用戶額外增加代碼。ggplot2支持的geom類型geom_point():散點圖、點圖等geom_boxplot():箱線圖geom_line():趨勢線、時間序列等。geom_bar():條形圖geom_density():密度圖geom_histogram():直方圖geom_text():文本3.如果希望添加繪圖的主標題,并更改X軸和Y軸標題,可使用labs層和theme來完成,前者用于指定標簽,后者用于控制標簽大小、顏色ggplot(JS)+geom_point(aes(x=height,y=weight,color=title))+labs(title="散點圖",x="身高",y="體重")4.調(diào)整標簽大小可以使用函數(shù)theme()的參數(shù)現(xiàn)有圖像上添加標題和坐標軸標簽、改變圖例標題gg=ggplot(JS)+geom_point(aes(x=height,y=weight,color=title))+labs(title="散點圖",x="身高",y="體重")gg1=gg+theme(plot.title=element_text(size=30,face="bold"),axis.text.x=element_text(size=15),axis.text.y=element_text(size=15),axis.title.x=element_text(size=25),axis.title.y=element_text(size=25))+scale_color_discrete(name="職稱")print(gg1)5.對數(shù)據(jù)進行分組后繪制圖形對于比較不同數(shù)據(jù)的趨勢非常有幫助,為此,ggplot2提供了分面函數(shù)facet_wrap(),可根據(jù)數(shù)據(jù)類別按照行、列或矩陣分面的方式將散點圖,柱形圖等分組并放到同一面板內(nèi)展示。gg+facet_wrap(~title,ncol=2)每個職稱繪制一個對應的散點圖,每列2個圖形可以再增加一個變量sex進行分組gg+facet_wrap(~title+sex,ncol=2)助教+男的分組數(shù)據(jù)為空,對應的分組圖形并未顯示。6.scale()比例函數(shù)允許用戶控制每種美學的比例。比例函數(shù)的名稱類似scale_aesthetic_suffix()scale_colour_manual()函數(shù)來指定顏色ggplot(JS,aes(x=height,y=weight,color=title))+geom_point()+scale_color_manual(values=c("red","yellow","green","blue"))7.統(tǒng)計函數(shù)每個統(tǒng)計函數(shù)都與默認幾何圖形相關(guān)聯(lián),因此渲染圖形一般不需要設(shè)定幾何圖形geom參數(shù)。ggplot(JS,aes(x=title,y=salary))+stat_summary()##Nosummaryfunctionsupplied,defaultingto##`mean_se()`繪制不同職稱(x)的收入(y)的均值和方差情況8.保存ggplot2圖形
可使用ggsave()函數(shù)保存.
ggsave從文件擴展名猜測文件的格式,可用的文件類型有eps/ps,tex(pictex),pdf,jpeg,tiff,png,bmp,svg和wmf等。#把最后一個顯示的圖形保存為pdf格式ggsave("myplot.pdf")#把gg1保存為png文件ggsave("myplot2.png",plot=gg1)stat函數(shù)和默認的geom圖形函數(shù):stat_bin():geom_bar(),geom_freqpoly(),geom_histogram()stat_bin2d():geom_bin2d()stat_bindot():geom_dotplot()stat_binhex():geom_hex()stat_boxplot():geom_boxplot()stat_contour():geom_contour()stat_quantile():geom_quantile()stat_smooth():geom_smooth()stat_sum():geom_count()4.3增強型繪圖plotly包
plotly是一個基于JavaScript的開源增強型繪圖工具庫,可用于制作各種圖形,包括:折線圖、散點圖、面積圖、條形圖、箱形圖、直方圖、熱圖等圖表。創(chuàng)建plotly繪圖對象有兩種主要方法:通過將ggplot2對象(通過ggplotly())轉(zhuǎn)換為繪圖對象。通過使用plot_ly()/plot_geo()/plot_mapbox()直接初始化繪圖對象。4.3.1
將ggplot2對象轉(zhuǎn)換為plotly對象
plotly包中的ggplotly()函數(shù)能夠?qū)gplot2對象轉(zhuǎn)換為plotly對象,對于快速向現(xiàn)有g(shù)gplot2工作流程添加交互性非常有幫助。p<-ggplot(JS,aes(x=height,y=weight))+geom_point(aes(color=title))+xlab("身高")+ylab("體重")+ggtitle("JS數(shù)據(jù)身高體重分布")ggplotly(p)4.3.2
直接創(chuàng)建plotly對象
plot_ly函數(shù)基本語法如下:plot_ly(data,x,y,z,type,mode...)其中x,y,z表示各軸數(shù)據(jù),type表示圖形的類型,包括點圖,柱狀圖,熱圖等。plot_ly(data=JS,x=~height,y=~weight,color=~title,symbol=~title,type="scatter",mode="markers")plot_ly繪制基本3D表面圖只需添加一個z變量,plot_ly()就會知道如何在三個維度上渲染標記、線條和路徑#`%>%`表示把plot_ly的結(jié)果反饋給add_surface()函數(shù)plot_ly(z=~volcano)%>%add_surface()這里,%>%表示管道操作符,就是將一個操作的結(jié)果反饋到其下方的下一個操作中4.4交互式動態(tài)網(wǎng)頁Shiny包網(wǎng)頁開發(fā),尤其是交互式動態(tài)網(wǎng)頁的開發(fā),有一定的開發(fā)門檻。在R和Python中,我們可以使用shiny包便捷地構(gòu)建Web應用程序(ShinyApp),降低開發(fā)難度。使用shiny包開發(fā)無需前、后端支持,也無需精通HTML,CSS或者JavaScript等網(wǎng)頁開發(fā)語言。4.4.1
Shiny簡介
Shiny是由R驅(qū)動的交互式Web應用程序。shiny包有多個內(nèi)置示例,每個示例都是一個獨立的Shiny應用程序。探索Shiny應用程序創(chuàng)建第一個Shiny應用程序。library(shiny)runExample("01_hello")Shiny應用程序的結(jié)構(gòu)
Shiny應用程序結(jié)構(gòu)基本相同,由一個包含ui和sever的app.R文件組成。一般通過創(chuàng)建一個新目錄并在其中保存一個app.R文件來創(chuàng)建Shiny應用程序。library(shiny)#Seeaboveforthedefinitionsofuiandserverui<-...server<-...shinyApp(ui=ui,server=server)對象控制應用程序的布局和外觀包含構(gòu)建應用程序所需的指令HelloShiny”示例的ui對象使用不同類型Output函數(shù)(如”dataTableOutput”
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業(yè)人才資源代理協(xié)議書
- 2025年商業(yè)承兌匯票質(zhì)押合同
- 2025年度特種車輛買賣及售后服務協(xié)議3篇
- 《稅款征收基本制度》課件
- 二零二五年度2025版木材碳排放權(quán)交易合同2篇
- 2025版門窗產(chǎn)品進出口貿(mào)易合同4篇
- 二零二五年度商業(yè)步行街鋪面租賃及品牌管理合同
- 二零二五版行政合同行政主體特權(quán)與公眾權(quán)益保護協(xié)議3篇
- 二零二五年度餐飲店兩人合伙經(jīng)營風險承擔協(xié)議
- 二零二五年度家居用品貼牌設(shè)計與市場拓展協(xié)議
- 廣西桂林市2023-2024學年高二上學期期末考試物理試卷
- 財務指標與財務管理
- 2023-2024學年西安市高二數(shù)學第一學期期末考試卷附答案解析
- 部編版二年級下冊道德與法治第三單元《綠色小衛(wèi)士》全部教案
- 【京東倉庫出庫作業(yè)優(yōu)化設(shè)計13000字(論文)】
- 保安春節(jié)安全生產(chǎn)培訓
- 初一語文上冊基礎(chǔ)知識訓練及答案(5篇)
- 勞務合同樣本下載
- 血液透析水處理系統(tǒng)演示
- GB/T 27030-2006合格評定第三方符合性標志的通用要求
- GB/T 13663.2-2018給水用聚乙烯(PE)管道系統(tǒng)第2部分:管材
評論
0/150
提交評論