日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

R语言acres92 region_《R语言实战》读书笔记-- 第六章 基本图形

發布時間:2025/4/17 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 R语言acres92 region_《R语言实战》读书笔记-- 第六章 基本图形 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先寫第二部分的前言。

第二部分用來介紹獲取數據基本信息的圖形技術和統計方法。

本章主要內容

條形圖、箱型圖、點圖

餅圖和扇形圖

直方圖和核密度圖

分析數據第一步就是要觀察它,用可視化的方式是最好的。本章的主題有兩個

1、將變量的分布作可視化展示

2、通過結果變量進行跨組比較

下面從不同的圖形開始探索數據。

6.1條形圖

6.1.1簡單地條形圖

條形圖是通過條形展示離散變量的頻數分布。函數是barplot:

barplot(height) height是主要參數,horiz = TRUE就是橫向條形圖。

height可以是數值向量或者矩陣。向量的話就是向量每個元素的分布,矩陣的話是按照列一個一個往上加,就是堆疊。

如果要繪制的變量是因子或者有序因子,可以使用plot函數,直接畫出條形統計圖,形式為plot(因子),書上的例子plot(Arthritis$Improved)。

6.1.2堆砌條形圖和分組條形圖

barplot后面加矩陣時,如果beside = FALSE 得到一個堆砌條形圖,若為TRUE,則為分組條形圖。下面是示例:

opar

par(mfrow= c(1,2))

library(vcd)

counts

barplot(counts,

main= "Stacked Bar Plot",

xlab= "Treatment",ylab = "Frequency",

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

legend=rownames(counts))

barplot(counts,

main= "Grouped Bar Plot",

xlab= "Treatment",ylab = "Frequency",

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

legend=rownames(counts),

beside=TRUE)

par(opar)

下面是結果:

注意上面的代碼中,添加圖例的命令只有在對矩陣作用時才能用。

自然可以對圖例進行一下設置(亂弄的,熟悉一下命令):

barplot(counts,

main= "Stacked Bar Plot",

xlab= "Treatment",ylab = "Frequency",

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

)

legend("top",legend =rownames(counts),

col= c("red","yellow","green"),cex = 0.8,

pch= rep(15,3),bg = "blue")

6.1.3均值條形圖

條形圖不一定全都進行數據頻數的展示,還可以將均值、中位數方差等傳遞給barplot函數。

states

means

FUN=mean)

means

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

其實本質是一樣的。lines(means$x)可以在上面圖中頂端加一條折線,gplots包中barplot2函數可以作更復雜的圖。

6.1.4條形圖的微調

6.1.5棘狀圖

棘狀圖對堆砌條形圖進行重縮放,每個條形的高度均為1,不同的頻數對應著比例。vcd包中的spine函數可以做棘狀圖。

library(vcd)

counts

spine(counts,main= "Spinogram Example")

6.2餅圖

書上上來就說餅圖不是很常用,R中關于餅圖的選型不多.

pie函數:

pie(x, labels = names(x), edges = 200, radius = 0.8,

clockwise= FALSE, init.angle = if(clockwise) 90 else 0,

density= NULL, angle = 45, col = NULL, border =NULL,

lty= NULL, main =NULL, ...)

#主要參數當然是x和labels,其中x是非負數值型變量,表示面積,labels是名稱.

下面是一個例子:

par(mfrow = c(2,2))

slices

lbls

pie(slices,labels=lbls,

main= "Simple Pie Chart")

pct

lbls2

pie(slices,labels=lbls2,

col=rainbow(length(lbls2)),

main= "Pie Chart with Percentages")

library(plotrix)

pie3D(slices,labels=lbls2,explode = 0.1,

mian= "3D Pie Chart")

mytable

lbls3

pie(mytable,labels=lbls3,

main= "Pie Chart from a Table\n(with sample sizes)")

注意上面的例子中,plotrix中的pie3D函數,可以畫立體餅圖.

餅圖不太容易看出相對的比例大小,為改善這種情況,有 fan.plot 扇形圖來展現大小關系.在plotrix包中,fan.plot函數可以實現.

fan.plot(slices,labels = lbls,main = "Fan Plot")

上面的例子中,扇形張開角的大小就是相對比例關系,而半徑大小無所謂.

6.3直方圖

直方圖通過將值域分為幾組,Y值顯示頻數。用hist函數生成:

hist(x, breaks = "Sturges",

freq= NULL, probability = !freq,

include.lowest= TRUE, right =TRUE,

density= NULL, angle = 45, col = NULL, border =NULL,

main= paste("Histogram of", xname),

xlim= range(breaks), ylim =NULL,

xlab=xname, ylab,

axes= TRUE, plot = TRUE, labels =FALSE,

nclass= NULL, warn.unused =TRUE, ...)

#這里的x是一個數值向量,矩陣也可以;breaks是設置組數;

#freq是一個邏輯值,表示是否歸一化數據 其他參數用到再說

下面是一個例子:

par(mfrow=c(2,2))

hist(mtcars$mpg)

hist(mtcars$mpg,

breaks= 12,

col= "red",

xlab= "Miles Per Gallon",

main= "Colored histgram with 12 bins")

hist(mtcars$mpg,

freq=FALSE, #FALSE是將數據歸一化

breaks= 12,

col= "red",

xlab= "Miles Per Gallon",

main= "Histogram,rug plot,density")

rug(jitter(mtcars$mpg))

lines(density(mtcars$mpg),col= "blue",lwd = 2)

需要寫幾個函數:

lines(x, y = NULL, type = "l", ...)

#向圖形中添加曲線,lines(x,cos(x)),不會另起一幅圖形界面

rug函數:添加“地毯”

rug(x, ticksize = 0.03, side = 1, lwd = 0.5, col = par("fg"),

quiet = getOption("warn") < 0, ...)

#應該就是第三幅圖中橫軸下面的短線。通常和jitter連用,這是為了避免線的重疊。

jitter函數:為數值向量添加一個擾動

jitter(x, factor = 1, amount = NULL)

#x是數值向量,factor是一個數值,與amount一起決定波動范圍,amount是波動的范圍設置。其實,這個函數相當于

r

density函數:

density(x, bw = "nrd0", adjust = 1,

kernel = c("gaussian", "epanechnikov", "rectangular",

"triangular", "biweight",

"cosine", "optcosine"),

weights = NULL, window = kernel, width,

give.Rkern = FALSE,

n = 512, from, to, cut = 3, na.rm = FALSE, ...)

是一個核密度函數,通常與畫圖函數一起用.下面寫寫核密度估計.

核密度估計是非參數估計的一種,是用來估計一組數的規律用的,所謂非參數,就是不假定數據服從某種分布,而只是利用已知的數據進行分布估計。比如用一個點附近的幾個點的均值作為此處的值。有一些核函數可以確定估計方式。最重要的是帶寬的選取,有一個公式可以用來評價規律的好壞。

上面的函數中,x是數據,bw是帶寬,adjust是與帶寬相關的值,共同決定帶寬。

還要看一下box函數:

為已經畫出的圖形周邊添加一個盒子,可以設置線型、顏色等。

6.4核密度圖

用plot(density(x))來畫核密度圖。例子:

par(mfrow = c(2,1))

d

plot(d)

d

plot(d,main= "Kernel Density of Miles Per Gallon")

polygon(d,col= "red",border = "blue")

rug(mtcars$mpg,col= "brown")

#注意這里有個函數:polygon這是一個畫多邊形的函數

polygon(x, y = NULL, density = NULL, angle = 45,

border = NULL, col = NA, lty = par("lty"),

..., fillOddEven = FALSE)

#其中x、y是包含多邊形頂點的向量,density是密度的設置,其他比較平凡。

d

plot(d,main = "Kernel Density of Miles Per Gallon")

polygon(d,density = 10,col = "red",border = "blue") #注意這里加上了線的密度,圖形見下面斜線圖。

rug(mtcars$mpg,col = "brown")

下面注意了,書上說和密度圖可以比較組間差距,確實是這樣,來看一下,感覺這個挺有用。利用sm包中的sm.density.compare函數進行操作。

sm.density.compare(x, group, h, model = "none", ...)

#x是一個數值向量,group是分組因子向量,關于model,下面兩個圖是一個對比:

y

g

sm.density.compare(y, g, model

="equal") #一個跟bootstrap相等假設檢驗相關的量,還會顯示一個適當帶子

sm.density.compare(y, g, model="none") #畫簡單圖

par(lwd = 2)

library(sm)

cyl.f

labels= c("4 cylinder","6 cylinder","8 cylinder"))

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

title(main= "MPG Distribution by Car Clyinders")

colfill

legend(locator(1),levels(cyl.f),fill=colfill) #這里的locator函數是用鼠標點擊確定位置

箱線圖是一項可視化分布和組間差異的手段,并且很常用。

6.5箱線圖

箱線圖繪制連續型變量的五個數 最小數、.25四分位數、中位數、.75分位數、最大值。還可以顯示離群點 正負1.5*IQR 以外的值,其中IQR是四分位距(上下四分之一分位數之差)。boxplot函數:

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)

#參數比價直觀,用的時候差

可以使用boxplot.stats(x)可以顯示箱線圖的各種統計量。

6.5.1使用并列箱線圖進行跨足比較

boxplot函數:

boxplot(formula, data = NULL, ..., subset, na.action =NULL)

#這里的formula是公式,而data是列表或者數據框。

#示例函數 y~A 將為類別變量A的每個值并列的生成數值型變量y的箱線圖。y~A*B 將為變量A和B所有水平的兩兩組合生成數值型變量y的箱線圖。

#參數 varwidth= TRUE 是使箱線圖的寬度與樣本使大小的平方根 成正比。

例子:

boxplot(mpg~cyl,data =mtcars,

notch=TRUE,

varwidth=TRUE,

col= "red",

main= "Car Mileage Data",

xlab= "Number of Cylinders",

ylab= "Miles Per Gallon")

話說多圖的目的在于更好地體現數據的信息,那么圖形的各種屬性是可以反應數據的特點的,比如 notch = TRUE在中位數的地方加一個凹槽,可以明顯看出中位數的差別,而寬度varwidth = TRUE 表示寬度與樣本量平方根成正比,可以看出樣本量的大小關系。

下面又一個例子:

mtc

mtc$cyl.f

labels= c("4","6","8"))

mtc$am.f

labels= c("auto","standard"))

boxplot(mpg~cyl.f*am.f,data =mtc,

varwidth=TRUE,

col= c("gold","darkgreen"),

main= "Mpg Distribution by Auto Types",

xlab= "Auto Types")

上面的圖形中,可以看出cyl越小,并且為standard時,耗油最少。可以很好的反應y的影響因素。同時,由寬度大小,可以看出8.auto和4.standard數量最多。

6.5.2小提琴圖

作為箱線圖和核密度圖的結合,小提琴圖名字還是第一次聽過。vioplot包中vioplot函數可以繪制此圖。函數vioplot:

vioplot( x, ..., range=1.5, h, ylim, names, horizontal=FALSE,

col="magenta", border="black", lty=1, lwd=1, rectCol="black",

colMed="white", pchMed=19, at, add=FALSE, wex=1,

drawRect=TRUE)

例子:

library("vioplot")

x1

x2

x3

vioplot(x1,x2,x3,

names= c("4","6","8"),

col= "gold")

title("Violin Plot of Miles Per Gallon")

#值得注意的是,必須將每一個想畫小提琴圖的向量分別列出來,不能用數據框……

圖中,中間的白點和黑線是中位數和分位數等箱線圖元素,而周邊曲線是核密度圖。關于小提琴圖,書上說,時間會證明一切。

6.6點圖

dotchart函數:

dotchart(x, labels = NULL, groups = NULL, gdata =NULL,

cex= par("cex"), pch = 21, gpch = 21, bg = par("bg"),

color= par("fg"), gcolor = par("fg"), lcolor = "gray",

xlim= range(x[is.finite(x)]),

main= NULL, xlab = NULL, ylab =NULL, ...)

#這里x是一個數值向量或者矩陣,labels是每個值的標簽組成的向量,groups是對向量x進行分組,

#gdata是分組數據的量,比如均值、中位數等 其他參數比較平凡

下面是例子:

dotchart(mtcars$mpg,labels = row.names(mtcars),cex = .7)

一般而言,點圖經過排序,并且將分組分別涂色表示以后才更有用。

下面的例子:

mtc

mtc$cyl

mtc$color[mtc$cyl== 4]

labels=row.names(mtc),

cex= .7,

groups=mtc$cyl,

gcolor= "black", #這個語句是設置labels的顯示顏色,就是圖中的4、6、8

color=mtc$color,

pch= 19,

main= "Gas Mileage for Car Models\ngrouded by cylinder",

xlab= "Miles Per Gallon")

從上圖中可以看出,隨著缸數的增加,每加侖英里數在減少~但是也有特殊點和離群點,特殊點是最上面的兩個綠點,離群點是最下面兩個綠點。

注意,Himsc中有dotchart2函數,提供更豐富的點圖選項。

下一章用于描述分布和二元關系的定量統計方法和一類推斷方法,需要看一遍統計了。

總結

以上是生活随笔為你收集整理的R语言acres92 region_《R语言实战》读书笔记-- 第六章 基本图形的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。