R語言--繪圖(條形圖、餅圖、扇形圖、直方圖、核密度圖、箱線圖)


1 繪圖

1.1 條形圖  barplot() (針對離散型變量)

library(vcd)

dat<-Arthritis

counts<-table(dat$Improved)

解釋:table求數據框中間取值的頻數

 

1)簡單條形圖(一個變量,一維)

barplot(counts,main="Simple Bar Plot",xlab="Improvement",ylab="Frequency")

 

(2)堆砌條形圖(兩個變量,二維)

 barplot(counts,col=c("green","yellow","red"))

 

(3)分組條形圖

barplot(counts,col=c("green","yellow","red"),beside=T)

解釋:beside設置條形圖是否需要分組

 

(4)均值條形圖

state<-data.frame(state.region,state.x77)  #使用內置數據集,構造一個數據框

mean<-aggregate(state$Illiteracy,by=list(state.region),FUN=mean)

解釋:aggregate()匯總函數,state$Illiteracy根據文盲率這個變量,by分組,state.region根據地區分組,FUN=mean匯總函數求平均(注:求每個區域region對應文盲率Illiteracy得平均mean)

mean<-mean[order(mean$x),]  #對行標簽對象x排序

 

 barplot(mean$x,names.arg = mean$Group.1)

解釋:第一個參數mean$x是畫圖的對象,第二個參數names.arg是繪制在每個條形或條形組下面的名稱的向量。如果省略了這個參數,那么如果這是一個矢量,名字將從height的名字屬性中提取,如果是一個矩陣,則從列名中提取。

 

錯誤:缺少參數height”,也沒有缺省值

 

修正:畫圖時參數沒有指定具體

 

5) 棘狀圖

counts<-table(dat$Improved,dat$Treatment)

spine(counts,main="Spinogram Example")

 

 

1.2 餅圖  pie(x,labels)

(1)簡單餅圖

slices<-c(10,12,4,16,8)

lbls<-c("US","UK","Austrlia","Germany","France")

pie(slices,lables=lbls,main="Simple Pie Chart",radius=0.8,lty=1)

解釋:radius設置餅圖直徑的大小,默認為1lty=1設置線為實線

 

2)進化餅圖

 pct<-round(slices/sum(slices)*100)  #把數字轉換成百分比

 

lbls1<-paste(lbls," ",pct,"%",sep="")  

解釋:paste連接字符串函數,第一個參數lbls是連接的對象,第二個參數是空格,第三個參數是百分比,第四個參數是連接符號%,第五個參數是分隔符sep

 

pie(pct,labels=lbls1,lty=1)

 

(3) 扇形圖 fan.plot

library(plotrix)

slices<-c(10,12,4,16,8)

lbls<-c("US","UK","Austrlia","Germany","France")

pie(slices,lbls)

fan.plot(slices,labels = lbls,lty=1)

 

 

 

1.3 直方圖 hist() (針對連續型變量)

1)簡單直方圖

dat<-mtcars

hist(dat$mpg,lty=1)

 

2)進化直方圖

hist(dat$mpg,col="green",breaks=12,lty=1)

解釋: hist畫直方圖,第一個參數dat$mpg是畫圖的對象,col="green"顏色填充為綠色,breaks=12把變量分為12組,lty=1設置為實線

 

3)再進化直方圖

hist(dat$mpg,col="green",breaks=12,freq=F,lty=1)  #freq=F設置右側刻度是百分比

rug(jitter(dat$mpg))  #軸虛圖,下方一個個黑色的短線

lines(density(dat$mpg),col="red",lwd=2,lty=1)

解釋:lines表示在此圖的基礎上作圖,而不是單獨畫出來,density概率分布的估計,col設置線條的顏色,lwd設置線條的粗細,lty=1設置為實線,lty=2設置為虛線

 

box()  #把圖框起來

 

 

1.4 核密度圖  density()

1)簡單核密度圖

d<-density(dat$mpg)  #mpg單位汽車里程數

plot(d,main="title",lty=1)  #畫曲線

polygon(d,col="green",border="red",lty=1)  #給概率密度曲線填色

rug(dat$mpg,col="bule)  #添加軸虛圖

2)可比較的核密度圖

library(sm)  #加載包

attach(mtcars)  #確定本操作均在數據集mtcars

cyl.f<-factor(cyl,levels=c(4,6,8),labels=c("4 cylinder","6 cylinder","8 cylinder"))

解釋:cyl把變量cyl設置為因子型,levels=c(4,6,8)這是cyl的幾個水平標簽,labels設置圖例標簽

sm.density.compare(mpg,cyl,xlab="Miles Per Gallon")

解釋:sm.density.compare是比較畫核密度曲線的,mpg,cyl這是要比較的兩個變量,xlab設置橫軸標簽

title(main="MPG Distribution by Car Cylinder")  #設置圖形標題

colfill<-c(2:(1+length(levels(cyl.f))))  #設置顏色

 

legend(locator(1),levels(cyl.f),fill=colfill)  #在圖上點一下就出現圖例

解釋:legend該函數可用於為繪圖添加圖例可以用對函數locator(1)的調用來代替xy參數x y 用來定位圖例的xy坐標),fill如果指定,該參數將導致用指定顏色填充的方框(或用指定顏色的陰影)出現在圖例文本旁邊。

detach(mtcars)

 

 

1.5 箱線圖 boxplot()

1)標准箱線圖

 boxplot(mtcars$mpg,main="box ploy",ylab="Miles per Gallon")

箱線圖理解:中間這跟黑色線代表是中位數,說明單位汽車行駛的英里數大概是20,黑色線的上下,也就是箱子上下的邊界分別是上四分位數(最高的25%)和下四分數(最低的25%),虛線的上端和下端代表最大值和最小值

2)分組箱線圖

boxplot(mpg~cyl,data=mtcars)

圖形理解:不用的汽車發動車缸數能行駛的英里數比較,可以看出4缸汽車開的的英里數高,即4缸的車省油

 

一個自變量:cyl

boxplot(mpg~cyl,data=mtcars,varwidth=T,notch=T)   

解釋:varwidth=T根據樣本大小調整粗細,notch=T生成帶槽線的箱線圖

 

兩個自變量:cylam

 mtcars$cyl.f<-factor(mtcars$cyl,levels = c(4,6,8),labels = c("4","6","8"))

 mtcars$am.f<-factor(mtcars$am,levels = c(0,1),labels = c("auto","standard"))

boxplot(mpg~am.f*cyl.f,data=mtcars,varwidth=T,col=c("red","green"))

解釋:cyl表示汽車的缸數,am表示汽車是自動擋還是手動擋,levels表示自變量的取值,labels表示橫坐標軸刻度的標簽,varwidth=T根據樣本大小調整粗細

 

3小提琴圖  vioplot()

library(vioplot)

x1<-mtcars$mpg[mtcars$cyl==4]

x2<-mtcars$mpg[mtcars$cyl==6]

x3<-mtcars$mpg[mtcars$cyl==8]

vioplot(x1,x2,x3,names = c("4 cyl","6 cyl","8 cyl"),col = "gold")

圖形解釋:白色點代表其中位數,曲線可以清楚的看到其分布

 

 

1.6 點圖

1)原始點圖

dotchart(mtcars$mpg,labels=row.names(mtcars),cex=.7,main="Gas Mileage for Car Models",xlab="Miles Per Gallon")

解釋:dotchart畫點圖,mtcars$mpg畫圖的對象,labels=row.names(mtcars)指定左邊顯示的標簽,cex=.7字體的大小縮放為0.7main設置標題,,xlab設置橫坐標軸的顯示

 

2)排序后的點圖

x<-mtcars[order(mtcars$mpg),]  #讓數據集按照mpg排序

> x$cyl<-factor(x$cyl)  #把變量cyl設置為因子型

> x$color[x$cyl==4]<-"red"

> x$color[x$cyl==6]<-"blue"

> x$color[x$cyl==8]<-"darkgreen"

dotchart(x$mpg,labels = row.names(x),cex=.7,groups = x$cyl,gcolor=x$color,pch=19)

解釋:dotchart畫點圖,mtcars$mpg畫圖的對象,labels=row.names(mtcars)指定左邊顯示的標簽,cex=.7字體的大小縮放為0.7groups()分組顯示,gcolor=x$color填充顏色,pch=19設置顯示為實心圓點

圖形解釋:可以看出4缸的汽車最省油,8缸的汽車最不省油

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM