【R語(yǔ)言】--- 散點(diǎn)圖

散點(diǎn)圖是將所有的數(shù)據(jù)以點(diǎn)的形式展現(xiàn)在直角坐標(biāo)系上,以顯示變量之間的相互影響程度,點(diǎn)的位置由變量的數(shù)值決定,每個(gè)點(diǎn)對(duì)應(yīng)一個(gè) X 和 Y 軸點(diǎn)坐標(biāo)。散點(diǎn)圖可以用R自帶的plot()函數(shù)繪制,也可以用ggplot2包的geom_point()和 geom_dotplot()函數(shù)來(lái)繪制,當(dāng)使用geom_dotplot()繪圖時(shí),point的形狀是dot,不能改變點(diǎn)的形狀,因此,geom_dotplot 叫做散點(diǎn)圖(Scatter Plot),通過(guò)繪制點(diǎn)來(lái)呈現(xiàn)數(shù)據(jù)的分布,對(duì)點(diǎn)分箱的方法有兩種:點(diǎn)密度(dot-density )和直方點(diǎn)(histodot)。當(dāng)使用點(diǎn)密度分箱(bin)方式時(shí),分箱的位置是由數(shù)據(jù)和binwidth決定的,會(huì)根據(jù)數(shù)據(jù)進(jìn)行變化,但不會(huì)大于binwidth指定的寬度;當(dāng)使用直方點(diǎn)分箱方式時(shí),分箱有固定的位置和固定的寬度,就像由點(diǎn)構(gòu)成的直方圖(histogram)。

plot()函數(shù)繪制

基本語(yǔ)法:

plot(x, y, type="p", main, xlab, ylab, xlim, ylim, axes)

具體參數(shù)如下:

x 橫坐標(biāo) x 軸的數(shù)據(jù)集合;
y 縱坐標(biāo) y 軸的數(shù)據(jù)集合;
type:繪圖的類型,p 為點(diǎn)、l 為直線, o 同時(shí)繪制點(diǎn)和線,且線穿過(guò)點(diǎn);
main:圖表標(biāo)題;
xlab、ylab x 軸和 y 軸的標(biāo)簽名稱;
xlim、ylim x 軸和 y 軸的范圍;
axes 布爾值,是否繪制兩個(gè) x 軸。

type 參數(shù)可選擇值:

p:點(diǎn)圖;
l:線圖;
b:同時(shí)繪制點(diǎn)和線;
c:僅繪制參數(shù) b 所示的線;
o:同時(shí)繪制點(diǎn)和線,且線穿過(guò)點(diǎn);
h:繪制出點(diǎn)到橫坐標(biāo)軸的垂直線;
s:階梯圖,先橫后縱;
S:階梯圖,先縱后豎;
n: 空?qǐng)D。

案例

# 創(chuàng)建數(shù)據(jù)
data = data.frame(
  x=seq(1:100) + 0.1*seq(1:100)*sample(c(1:10) , 100 , replace=T),
  y=seq(1:100) + 0.2*seq(1:100)*sample(c(1:10) , 100 , replace=T)
)
# 基本散點(diǎn)圖
plot(x=data$x, y=data$y)
基本散點(diǎn)圖

美化后的散點(diǎn)圖

plot(x=data$x, y=data$y, type="p",
     xlab="地下生物量 (g/m^2)",
     ylab="地上生物量(g/m^2)",
     main="地上生物量與地下生物量間關(guān)系",
     xlim=c(0, 200),
     ylim=c(0, 300))
美化后的散點(diǎn)圖

散點(diǎn)圖矩陣

散點(diǎn)圖矩陣是借助兩變量散點(diǎn)圖的作圖方法,它可以看作是一個(gè)大的圖形方陣,其每一個(gè)非主對(duì)角元素的位置上是對(duì)應(yīng)行的變量與對(duì)應(yīng)列的變量的散點(diǎn)圖。而主對(duì)角元素位置上是各變量名,這樣,借助散點(diǎn)圖矩陣可以清晰地看到所研究多個(gè)變量?jī)蓛芍g的相關(guān)關(guān)系。散點(diǎn)圖矩陣就是把數(shù)據(jù)集中的每個(gè)數(shù)值變量?jī)蓛衫L制散點(diǎn)圖,這里我們用pairs()函數(shù)繪制。

pairs(iris[1:4], main = "Anderson's Iris Data -- 3 species",
      pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)])
散點(diǎn)圖矩陣

把直方圖放在對(duì)角線上

panel.hist <- function(x, ...)
{
  usr <- par("usr"); on.exit(par(usr))
  par(usr = c(usr[1:2], 0, 1.5) )
  h <- hist(x, plot = FALSE)
  breaks <- h$breaks; nB <- length(breaks)
  y <- h$counts; y <- y/max(y)
  rect(breaks[-nB], 0, breaks[-1], y, col = "cyan", ...)
}
pairs(USJudgeRatings[1:5], panel = panel.smooth,
      cex = 1.5, pch = 24, bg = "light blue", horOdd=TRUE,
      diag.panel = panel.hist, cex.labels = 2, font.labels = 2)
帶有直方圖的散點(diǎn)圖矩陣

geom_point()函數(shù)繪制

geom_point()函數(shù)用于創(chuàng)建散點(diǎn)圖。散點(diǎn)圖對(duì)于顯示兩個(gè)連續(xù)變量之間的關(guān)系最有用。它可以用于比較一個(gè)連續(xù)變量和一個(gè)類別變量,或者兩個(gè)類別變量,但是像geom_jitter()、geom_count()或geom_bin2d()這樣的變體通常更合適。氣泡圖是一個(gè)散點(diǎn)圖,第三個(gè)變量映射到點(diǎn)的大小。

#安裝ggplot2包
install.packages("ggplot2")
#調(diào)用ggplot2包
library(ggplot2)
#繪制散點(diǎn)圖
p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point()
geom_point()函數(shù)繪制的散點(diǎn)圖
為散點(diǎn)圖形添加不同顏色和性狀的映射
p + geom_point(aes(colour = factor(cyl)))
p + geom_point(aes(shape = factor(cyl)))
繪制氣泡形式的散點(diǎn)圖
p + geom_point(aes(size = qsec))
#繪制一個(gè)根據(jù)物種設(shè)置顏色的散點(diǎn)圖
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species)) + 
  geom_point(size=6) +
  theme_bw()
按照物種繪制散點(diǎn)圖
#散點(diǎn)圖的美化
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species)) + 
  geom_point(size=6) +#設(shè)置點(diǎn)大小
  theme_bw()+#去除灰色背景
  xlab("Sepal.Length") + #設(shè)置x軸標(biāo)題
  ylab("Sepal.Width")+#設(shè)置y軸標(biāo)題
  theme(axis.text.x = element_text(size = 12, color = "black"))+##設(shè)置x軸字體大小
  theme(axis.text.y = element_text(size = 12, color = "black"))+##設(shè)置y軸字體大小
  theme(title=element_text(size=14))##設(shè)置x軸和y軸標(biāo)簽字體大小
美化后的散點(diǎn)圖

參考文獻(xiàn)

https://www.r-graph-gallery.com/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容