
來源:AI入門學(xué)習(xí)
作者:伍正祥
在克里米亞戰(zhàn)爭期間,南丁格爾發(fā)現(xiàn)戰(zhàn)地醫(yī)院的衛(wèi)生條件惡劣導(dǎo)致很多士兵死亡。因此,她開始研究傷員的死亡和衛(wèi)生環(huán)境的關(guān)系,并試圖用統(tǒng)計數(shù)據(jù)說服維多利亞女王改善軍事醫(yī)院的衛(wèi)生條件。但是她也擔(dān)心,女王那么忙,沒有時間看她那厚厚的報告和那些復(fù)雜的表格數(shù)據(jù)。于是,她設(shè)計了上面的這個生動又有趣的圖表,巧妙的展示了部隊醫(yī)院季節(jié)性的死亡率。她自己給它取名叫雞冠花圖(coxcomb)。
我們先來看看最早的南丁格爾玫瑰圖展示了什么樣的數(shù)據(jù)。這張圖展示的是1854年4月到1855年3月這一年間士兵的死亡情況。其中:
1)綠色表示死于可預(yù)防疾病的士兵人數(shù);
2)紅色表示死于槍傷的人數(shù);
3)黑色表示死于其他意外的人數(shù)。
從圖中可以看出,在這一年間,死亡人數(shù)最多的并不是在戰(zhàn)爭中受槍傷(紅色部分),大部分的士兵是死于可預(yù)防疾?。ňG色部分),特別是冬天的時候(1854年11月-1855年2月),死于可預(yù)防疾病的士兵人數(shù)大幅增加。這也反映出醫(yī)院的衛(wèi)生條件、保暖對于傷員的康復(fù)是多么的重要。因此,才說服了女王大人改善醫(yī)院條件。
這么有氣質(zhì)的圖表,我們來看看經(jīng)過這么多年的發(fā)展,大家都是怎么用的。盡管外形很像餅圖,但本質(zhì)上來說,南丁格爾玫瑰圖更像在極坐標(biāo)下繪制的柱狀圖或堆疊柱狀圖。只不過,它用半徑來反映數(shù)值(而餅圖是以扇形的弧度來表示數(shù)據(jù)的)。但是,由于半徑和面積之間是平方的關(guān)系,視覺上,南丁格爾玫瑰圖會將數(shù)據(jù)的比例夸大。因此,當(dāng)我們追求數(shù)據(jù)的準(zhǔn)確性時,玫瑰圖不一定是個好的選擇。但反過來說,當(dāng)我們需要對比非常相近的數(shù)值時,適當(dāng)?shù)目浯髸兄诜直妗?
1. Facebook 和 twitter的用戶對比
1)圖表中包括性別、年齡、教育、收入等11個分類的對比信息指標(biāo),每個指標(biāo)占用的圓周的角度相同,即任一指標(biāo)的扇區(qū)角度為(360/11=32.723度)。
2)在“Gender”,“Income”,“Age”,“Education”四個指標(biāo)中,又被分別劃成幾個不同的區(qū)段。
2、新冠肺炎全球疫情形勢
案例1:facebook數(shù)據(jù)
直接使用上面facebook的數(shù)據(jù),關(guān)注公眾號AI入門學(xué)習(xí)回復(fù)【facebook】獲取csv文件,用R語言畫個示例,數(shù)據(jù)格式需要長格式,如下:
#facebooks數(shù)據(jù) library(ggplot2) facebook = read.csv("facebook.csv",header=T,stringsAsFactors = FALSE) ggplot(facebook, aes(x = 類別1,y=比例,fill = 類別2)) + geom_bar(alpha = 0.93,stat="identity") + coord_polar()+ theme_bw()+ theme(panel.background = element_rect(fill = "black"))+ theme(axis.text = element_blank())+ theme(axis.ticks = element_blank())+# 去掉左上角的刻度線 theme(axis.title = element_blank())+ theme(legend.position = 'none')+# 去掉圖例 theme(panel.border = element_blank())+# 去掉外層邊框
theme(panel.background = element_rect(fill = "black"))+ #黑色背景 theme(panel.grid.major.x = element_line(colour =
"SpringGreen2", size = 0.3))+ #網(wǎng)格線設(shè)置 theme(panel.grid.major.y =
element_line(colour = "SpringGreen2", size = 0.3))+ #網(wǎng)格線設(shè)置 ylim(-0.3,1.1)+ scale_fill_discrete(c=1000, l=100) ggsave('rose.png',dpi = 1080)#保存為高清格式,dpi越大越清晰
圖形如下,可以根據(jù)個人喜好對顏色進(jìn)行切換,當(dāng)然,各種標(biāo)注,可以在PPT中完成,多個對比的,也可以在PPT中進(jìn)行拼接。
用R自帶數(shù)據(jù)集畫一個不帶網(wǎng)格線的
dsmall = diamonds[sample(nrow(diamonds),5000),] ggplot(dsmall, aes(x = clarity, fill = cut)) + geom_bar(alpha = 0.85) + coord_polar() + theme_bw() + theme(panel.background = element_rect(fill = "black"))+ theme(axis.text = element_blank())+ theme(axis.ticks = element_blank())+# 去掉左上角的刻度線 theme(axis.title = element_blank())+ theme(legend.position = 'none')+# 去掉圖例 theme(panel.border = element_blank())+# 去掉外層邊框
theme(panel.background = element_rect(fill = "black"))+ #黑色背景 theme(panel.grid=element_blank())+ ylim(-50,1000)+ scale_fill_manual(values = alpha(c("DarkOrchid1", "SpringGreen", "Magenta","Cyan","OrangeRed1"))) ggsave('rose.png',dpi = 1080)
案例2:多圖組合
首先,介紹個函數(shù),多個圖組合到一起的
multiplot <- function(..., plotlist=NULL, file, cols=1, layout=NULL) { library(grid) plots <- c(list(...), plotlist) numPlots = length(plots) if (is.null(layout)) { layout <- matrix(seq(1, cols * ceiling(numPlots/cols)), ncol = cols, nrow = ceiling(numPlots/cols)) } if (numPlots==1) { print(plots[[1]]) } else { grid.newpage() pushViewport(viewport(layout = grid.layout(nrow(layout), ncol(layout)))) for (i in 1:numPlots) { matchidx <- as.data.frame(which(layout == i, arr.ind = TRUE)) print(plots[[i]], vp = viewport(layout.pos.row = matchidx$row, layout.pos.col = matchidx$col)) } } }
開始繪圖部分,下六組數(shù)據(jù)替換分別跑一次,得到 p1,p2,p3,p4,p5,p6,然后用上面定義的函數(shù)組合即可
par(mar=c(0,0,0,0)) #c(4,3,8,2,2,1) #c(4,3,5,2,2,10) #c(15,3,5,8,2,8) #c(1,3,5,3,2,8)
#c(1,3,9,3,2,3) #c(2,12,9,3,2,3) data = data.frame(value= c(2,12,9,3,2,3), type = c('B','A','C','D','E',F)) p1 = ggplot(data, aes(x =type, y=value, fill=type)) + geom_bar(stat = "identity", alpha = 0.99) + coord_polar() + theme_bw() + theme(panel.background = element_rect(fill = "black"))+ theme(axis.text = element_blank())+ theme(axis.ticks = element_blank())+# 去掉左上角的刻度線 theme(axis.title = element_blank())+ theme(legend.position = 'none')+# 去掉圖例 theme(panel.border = element_blank())+# 去掉外層邊框 theme(panel.background =
element_rect(fill = "black"))+ #黑色背景 theme(panel.grid=element_blank())+ scale_fill_manual(values = alpha(c("OrangeRed1", 'gray91',"SpringGreen", "Magenta","Cyan", "DarkOrchid1"))) multiplot(p1,p2,p3,p4,p5,p6,cols=3)
結(jié)果如下:
重新替換一批數(shù)據(jù)得到下圖
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計學(xué)領(lǐng)域,假設(shè)檢驗是驗證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數(shù)據(jù)的科學(xué)計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點數(shù)據(jù)時的科學(xué)計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當(dāng)下,精準(zhǔn)營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價值 在數(shù)據(jù)驅(qū)動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實踐到業(yè)務(wù)價值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價值導(dǎo)向 統(tǒng)計模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10