本篇文章講講南丁格爾玫瑰圖,大致分為以下幾個(gè)部分:南丁格爾玫瑰圖來源酿愧,適用場景,包括這張圖如何用alteryx+tableau輕松完成制作。
1.來源
先來說說南丁格爾玫瑰圖來源乏奥,南丁格爾玫瑰圖,由南丁格爾發(fā)明(Nightingale) ,全名:Floarence Nightinggale亥曹,英國護(hù)士和統(tǒng)計(jì)學(xué)家邓了。玫瑰圖為南丁格爾在英國軍營工作時(shí)所發(fā)明,當(dāng)時(shí)她收集了在克里米亞戰(zhàn)爭時(shí)期的士兵在不同月份的死亡率和原因分布媳瞪,通過可視化的方式有效的打動了當(dāng)時(shí)的高層管理人員骗炉,包括維多利亞女王本人,于是醫(yī)療改良的提案才受到了大力的支持蛇受,將士兵的死亡率從42%降低至2%句葵。玫瑰花圖也有另外一個(gè)別名叫雞冠花圖(Coxcomb)。一些背景介紹如下截圖:
2.適用場景的思考
南丁格爾玫瑰圖類似于我們餅圖的變形兢仰,只不過在表示占比的同時(shí)乍丈,扇形面積的比較也能體現(xiàn)另外的維度。然而試想一下把将,如果餅圖本身的維度特別多轻专,那么再加上扇形面積的大小不同,圖形本身除了炫酷以外秸弛,從信息容易接受的角度來看铭若,很難幫助讀者有效捕捉到視圖信息。目前我看到的玫瑰圖递览,絕大部分扇形的角度都是均等的叼屠,特別多的場景是用于一個(gè)完整時(shí)間段內(nèi)的某種信息表示,例如一天的24小時(shí)內(nèi)的用戶訪問的行為绞铃。
3.實(shí)現(xiàn)邏輯
接下來到實(shí)踐環(huán)節(jié)镜雨,這個(gè)圖該怎么做?在說明具體步驟之前儿捧,我們還是搞清楚邏輯荚坞。
先從Tableau實(shí)現(xiàn)來看:其實(shí)是做了坐標(biāo)挑宠,將坐標(biāo)連線點(diǎn)后做好的一個(gè)多邊形,那么數(shù)據(jù)結(jié)構(gòu)里除了需要有每個(gè)點(diǎn)的坐標(biāo)颓影,還需要知道點(diǎn)之間的先后連接順序各淀。
具體到每一個(gè)扇形,簡單點(diǎn)來說最少通過如下四個(gè)點(diǎn)的連線來實(shí)現(xiàn)诡挂。
然而碎浇,此時(shí)你可能要反駁我說②和③連起來也不會是一個(gè)弧形,應(yīng)該是一個(gè)直線璃俗,那么其實(shí)很簡單奴璃,我們讓②和③之間再多描上去一些點(diǎn),之后彼此相連不就像一個(gè)弧形了么城豁。
那接下來我們的問題轉(zhuǎn)化為這些點(diǎn)的坐標(biāo)怎么得到(接下來會有各種數(shù)學(xué)了苟穆,不過do not worry)。
首先讓我們回想下坐標(biāo)下圓的坐標(biāo)和角度之間的關(guān)系(r代表圓半徑唱星,alpha代表弧度)雳旅。
x = r*cos(alpha)
y = r*sin(alpha)
r是扇形的半徑,很明顯在玫瑰圖里面r和我們的面積成正比魏颓。假如讓面積數(shù)值和面積代表的度量值相等岭辣。那么知道面積,我們需要知道扇形的角度那么角度怎么算甸饱?假如數(shù)據(jù)樣式結(jié)構(gòu)如下
數(shù)據(jù)有12個(gè)維度沦童,目前我讓每個(gè)維度占據(jù)同樣的角度,也就是360/12叹话,換成計(jì)算公式360/countd([Dimension Member])偷遗。扇形的面積S=[Measure]={360/countd([Dimension Member])}/360}*πr^2。那么r=SQRT([Measure]*countd([Dimension
Member])/π)(其中SQRT代表開方)
r的問題搞定了驼壶,我們來解決alpha氏豌。
既然每個(gè)扇形所占角度一致,那么每個(gè)扇形連線所用的點(diǎn)热凹,也就是下圖中2這個(gè)點(diǎn)的角度也很容易:m=((360/countd(Dimension Member))*(Dimension Member]-1))泵喘。那么3,4,5…12這些點(diǎn)的角度怎么算。3-12把扇形切分成了10等分般妙,2到3的角度增長也就是n=扇形角度/10纪铺。若講1-13命名為[PathID]那么從2到3增長的角度用公式表示:n=(([PathID]-2)*(360/
countd(Dimension Member)/10)。
那么任意一個(gè)點(diǎn)的角度可以表示為:m+n=((360/countd(Dimension Member))*(Dimension Member]-1))
角度知道了再除以180乘以π就轉(zhuǎn)變成弧度碟渺,也就是我們一開始說的alpha鲜锚。
四.Step by step輕松實(shí)現(xiàn)
1.原始數(shù)據(jù)
2.計(jì)算出來有多少不同的Dimension Member
3.將2中算好的維度數(shù)Number of Segment新建一列附到數(shù)據(jù)后方:
4.此時(shí),我們需要把每個(gè)扇形描繪出來的1-13個(gè)點(diǎn)做出來,用alteryx實(shí)現(xiàn)很簡單芜繁,通過新建行的工具旺隙。將初始值定義為1,約束條件為小于等于13骏令,條件為每一個(gè)循環(huán)上都對該內(nèi)容+1蔬捷。
得到數(shù)據(jù)結(jié)果:
5.接下來內(nèi)容是算出來1-13的坐標(biāo)。用了幾個(gè)計(jì)算公式伏社。
首先就是角度抠刺,這里需要特殊說明塔淤,因?yàn)?和13是原點(diǎn)摘昌,那么角度為0,于是有了如下條件語句高蜂。
有了角度后我們算出弧度:
上面計(jì)算的PI()就是π的函數(shù)表示
接下來算出來半徑:
X和Y的坐標(biāo)聪黎,還是要特別注意1和13這兩個(gè)點(diǎn)為0。Y就是X計(jì)算公式里換成sin备恤。
6.最后將數(shù)據(jù)結(jié)果保存為Tableau的數(shù)據(jù)格式tde
Tableau打開的數(shù)據(jù)如下:
7.Tableau里四次鼠標(biāo)拖拽就搞定稿饰。將xy坐標(biāo)分別拖到行列上,將Dimension放到細(xì)節(jié)露泊,圖表樣式選擇多邊形喉镰,將PathID放到路徑上,再將Dimension Member放到維度是就大功告成了惭笑。