
散點圖簡介
散點圖通常是用來表述兩個連續(xù)變量之間的關(guān)系,圖中的每個點表示目標數(shù)據(jù)集中的每個樣本。
同時散點圖中常常還會擬合一些直線,以用來表示某些模型。
繪制基本散點圖
本例選用如下測試數(shù)據(jù)集:
繪制方法是首先調(diào)用ggplot函數(shù)選定數(shù)據(jù)集,并在aes參數(shù)中指明橫軸縱軸。然后調(diào)用散點圖函數(shù)geom_point()便可繪制出基本散點圖。R語言示例代碼如下:
# 基函數(shù)
ggplot(ah, aes(x = ageYear, y = heightIn)) +
# 散點圖函數(shù)
geom_point()
:
基于顏色和點形對數(shù)據(jù)進行分組
本例選用如下測試數(shù)據(jù)集:
繪制方法是在基礎(chǔ)散點圖之上再在基函數(shù)的美學參數(shù)集里設(shè)置一個美學變量??芍付╟olour或者shape兩種參數(shù),分別將不同分組以不同顏色/點形表述。R語言示例代碼(基于顏色分組)如下:
# 基函數(shù):colour設(shè)置分組
ggplot(sah, aes(x = ageYear, y = heightIn, colour = sex)) +
# 散點圖函數(shù)
geom_point()
運行結(jié)果:
R語言示例代碼(基于點形分組)如下:
# 基函數(shù):shape設(shè)置分組
ggplot(sah, aes(x = ageYear, y = heightIn, shape = sex)) +
# 散點圖函數(shù)
geom_point()
運行結(jié)果:
說明:可自定義點形,共有大概36種點形可供選擇。具體請參考R語言ggplot2手冊。
本例選用如下測試數(shù)據(jù)集:
上一個示例中,映射到分組的變量是離散型變量。而對于除了橫軸縱軸之外的連續(xù)型變量,也可以映射到散點圖的色深和點大小上。R語言示例代碼(綁定顏色)如下:
# 基函數(shù):colour綁定連續(xù)變量
ggplot(sahw, aes(x = ageYear, y = heightIn, colour = weightLb)) +
# 散點圖函數(shù)
geom_point()
運行結(jié)果:
R語言示例代碼(綁定大小)如下:
# 基函數(shù):size綁定連續(xù)變量
ggplot(sahw, aes(x = ageYear, y = heightIn, size = weightLb)) +
# 散點圖函數(shù)
geom_point()
運行結(jié)果:
處理散點重疊
本例選用如下測試數(shù)據(jù)集:
如果圖中的散點重疊現(xiàn)象比較嚴重,可以在散點圖中設(shè)置散點的透明度來進行可視化。R語言示例代碼如下:
# 基函數(shù):size、colour分別綁定連續(xù)變量
ggplot(sahw, aes(x = ageYear, y = heightIn, size = weightLb, colour = sex)) +
# 散點圖函數(shù):alpha設(shè)置散點透明度
geom_point(alpha = .5) +
# 使散點的面積正比與變量值
scale_size_area() +
# 標尺函數(shù):palette設(shè)置配色方案
scale_colour_brewer(palette = "Set1")
運行結(jié)果:
添加回歸模型擬合線
本例選用如下測試數(shù)據(jù)集:
如果需要網(wǎng)散點圖中添加回歸模型擬合線,最主要是調(diào)用stat_smooth()函數(shù)。R語言示例代碼如下:
# 基函數(shù):sex綁定離散變量
ggplot(sah, aes(x = ageYear, y = heightIn, colour = sex)) +
# 散點圖
geom_point() +
# 標尺函數(shù):palette設(shè)置配色方案
scale_colour_brewer(palette = "Set1") +
# 擬合回歸線段以及置信域(默認0.95/通過level參數(shù)可自定義)
geom_smooth()
運行結(jié)果:
線段為曲線是因為參與擬合模型為局部線性回歸模型。往geom_smooth()函數(shù)中加入”method = lm”即可擬合經(jīng)典線性回歸。結(jié)果如下圖:
添加自定義模型擬合線
本例選用如下測試數(shù)據(jù)集:
上面一小節(jié)展示了用全局/局部回歸模型擬合樣本點并展示擬合線段,它使用ggplot2提供的geom_smooth()函數(shù)自動擬合并完成繪制。
但在更多時候,我們會使用其他包的模型(非ggplot2內(nèi)置模型)擬合。針對這種情況,我們需要自定義一個函數(shù)。該函數(shù)接受模型、橫縱軸名、橫軸范圍、橫軸樣本點數(shù)量等參數(shù),輸出一個包含預測變量和預測值的數(shù)據(jù)框。R語言實現(xiàn)代碼如下:
# 函數(shù)功能:輸出模型預測結(jié)果
# 參數(shù)說明:
# model: 模型變量
# xvar: 預測變量集
# yvar: 實際變量集
# xrange: 預測變量取值范圍
# samples: 預測變量個數(shù)
# 函數(shù)輸出:實際值 - 預測值數(shù)據(jù)集
predictvals = function(model, xvar, yvar, xrange = NULL, samples = 100, ...) {
# 模型為lm/glm/loess其中一種的話可自動生成xrange
if (is.null(xrange)) {
if (any(class(model) %in% c("lm", "glm")))
xrange = range(model$model[[xvar]])
else if (any(class(model) %in% "loess"))
xrange = range(model$x)
}
# 生成并返回實際值 - 預測值數(shù)據(jù)集
newdata = data.frame(x = seq(xrange[1], xrange[2], length.out = samples))
names(newdata) = xvar
newdata[[yvar]] = predict(model, newdata = newdata, ...)
newdata
}
在使用其他模型建模好之后,將新的模型等各參數(shù)傳遞進上述函數(shù),便得到預測結(jié)果數(shù)據(jù)集。最后將新的數(shù)據(jù)集輸出為折線圖即可。
下面展示一個略微復雜的例子,它將數(shù)據(jù)集根據(jù)不同性別分為兩組,分別建立回歸模型并繪制其擬合線。R語言實現(xiàn)代碼如下:
# 建模函數(shù):在這里設(shè)置模型
make_model = function(data) {
loess(heightIn ~ ageYear, data)
}
# 按性別切割數(shù)據(jù)集并返回模型列表
models = dlply(sah, "sex", .fun = make_model)
# 對不同數(shù)據(jù)集(男/女)進行預測
predvals = ldply(models, .fun = predictvals, xvar = "ageYear", yvar ="heightIn")
# 繪制數(shù)據(jù)集散點圖以及模型擬合線
ggplot(sah, aes(x = ageYear, y = heightIn, colour = sex)) +
geom_point() +
geom_line(data = predvals)
運行結(jié)果:
向散點圖添加邊際地毯
本例選用如下測試數(shù)據(jù)集:
方法很簡單,在原先散點圖繪制函數(shù)的基礎(chǔ)上增加邊際地毯函數(shù)就行。R語言實現(xiàn)代碼如下:
# 基函數(shù)
ggplot(faithful, aes(x = eruptions, y = waiting)) +
# 散點圖函數(shù)
geom_point() +
# 邊際地毯函數(shù)
geom_rug()
運行結(jié)果:
向散點圖添加標簽
本例選用如下測試數(shù)據(jù)集:
往散點圖中添加標簽的方法也很簡單,在原有散點圖函數(shù)的基礎(chǔ)上增加文本函數(shù)即可。R語言實現(xiàn)代碼如下:
# 基函數(shù)
ggplot(cty_1, aes(x = healthexp, y = infmortality)) +
# 散點圖函數(shù)
geom_point() +
# 文本函數(shù):aes參數(shù)中:y將原有縱軸值向上偏移,label設(shè)置綁定文本
# 將y軸偏移的目的是為了讓文本展示在樣本點上方而不是中間
geom_text(aes(y = infmortality + .2, label = Name))
運行結(jié)果:
PS:該示例中我們在文本繪制函數(shù)中重定義了美學特征集。之后文本繪制函數(shù)將使用新的美學特征集,但其他繪制函數(shù)的不變。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03