[Tableau] 55.RADIAL PIE GAUGE CHART

as title

可以有兩種實作方式,原理基本上是相同的.
適用: 建議若有篩選, (1)類別的數量要固定. (2)%大小差異也不要太大.
1.Polygon:
    線條可以填滿 (大多數做法,實作案例)
2.Line: 
    可以使用雙軸顯示名稱,但是需要設定計算式(參考說明, 實作案例)

 



(一)Polygon:
step1: 準備兩份相同資料,增添兩個欄位.
    (1)Path: 其中一個欄位是for角度,第一份統一為1,第2份統一為271
    (2)Rnk: 需要依據類型做排序(決定長的線條在外圈,視覺上會比較好看)
step2: 建立8個計算欄位
    (1)path (bin): 依據Path建立Bins,並且Size of bins設定為1
    (2)index: 固定為 (INDEX()-1)*2
    (3)Percentage: a.完成度,決定環狀線條的長度.避免將數字寫死,搭配LOD運算
            b.分子pv代表需要計算的measure.
            c.分組代表不分類別的最大值.
            d.參考算式: pv/ ({EXCLUDE [View] : MAX({ include [View]  : MAX(([pv]))})} )

    (4)wc_pi: 固定為window_max(max(pi()))
    (5)wc_start:    a.主要是用來控制各類別線的內外圈
            b.WINDOW_MAX(max(Rnk)) //可以依照需要調整順序.
    (6)wc_percentage: 固定為 WINDOW_MAX(MAX([Percentage]))
    (7)X: 依據上述(1)~(6)

        IF [index]< 270 THEN
            SIN([index]*[wc_percentage]*[wc_pi]/180)*[wc_start]
        ELSEIF [index]> 270 THEN
            SIN((540-[index])*[wc_percentage]*[wc_pi]/180)*([wc_start]+1)
        ELSE
            SIN(([index]*[wc_percentage]+3)*[wc_pi]/180)*([wc_start]+0.5)
        END


    (8)Y: 依據上述(1)~(6)

        IF [index]< 270 THEN
            cos([index]*[wc_percentage]*[wc_pi]/180)*[wc_start]
        ELSEIF [index]> 270 THEN
            cos((540-[index])*[wc_percentage]*[wc_pi]/180)*([wc_start]+1)
        ELSE
            cos(([index]*[wc_percentage]+3)*[wc_pi]/180)*([wc_start]+0.5)
        END


    (9)若要添加Label ,可以建立Y2:  wc_start+0.5 (參考此篇)

step3: 放入Columns,Rows的順序需要注意
    (1)先放X,Y於colunmns,rows
    (2)再將path (bin)放到detail Marks..
    (3)再將X,Y分別修改為Computing using path (bin). (若無法生成環形點圖,則再重新建立欄位path (bin))
    (4)將顏色類別放入(此例view放入Color Marks.)
    (5)將圖改成Polygon.
    (6)將index放入Path Marks.
    (7)添加雙軸要注意Polygon的設定會跑掉要重新調整


Line:
step1: 
    (1)建立兩個相同的dataset,並union.
    (2)新建欄位path, 其中一個為1, 一個為270
    
step2: 建立欄位
    (1)path(bin): 選取Path欄位,cre將區間改為1
    (2)index: index()-1
    (3)Max value:         Window_max(sum(pv)) //pv代表measure也就是顯示的長度
    (4)Value (window sum):     Window_max(sum(pv)) //不用懷疑算式跟上面依樣
    (5)PI window_max(max(PI()))
    (6)Rank: RANK_UNIQUE([Value (window sum)],'asc')
    (7)Step size:[Value (window sum)]/[Max value]
    (8)X: COS([index]*[PI]/180*[Step size])* [Rank]
    (9)Y: SIN([index]*[PI]/180*[Step size])*[Rank]

Step3: 拖拉至Marks
    (1)將view(類別)拖拉到Color Marks
    (2)Chart改成Line,並將path(bin)拖拉到Path
    (3)將Y拖到Columns,將X拖到Rows,並且都點選右鍵, computing using path(bin)
     (曾經使用過的 path(bin),可能會壞掉, 所以要重新生成後,拖拉到Path, 會從直線變成曲線, 如下)
    (4)重新生成path(bin),然後再重新執行(2)-(3)

Step4: 修改既有X,Y Calcuation Field. X,Y欄位都修改完相同狀態
    (1)將Max value: 
        a.改為Sepcific Dimension,勾選path(bin)和view.
        b.path(bin)在上面
        c.選擇At the level: Deepest
    (2)將Rank: 將Sepcific Dimension,勾選path(bin),view和view.
        a.改為Sepcific Dimension,勾選path(bin)和view.
        b.view在上面
        c.選擇At the level: view

setp5: 還可以再拉一個X,改為circle.並用雙軸的概念顯示名稱

p.s.若有需要檔案請於下方留言,再另外提供Google雲端硬碟下載位置.

同時也歡迎追蹤Tableau Public Gallery- MR.360 |聚沙成塔,裡面包含文章中的案例實作,
期待能帶給您新的啟發或靈感。

未來文章將喬遷新址「一趟數據分析之旅」,歡迎追蹤繼續支持,您將不會錯過任何新知識。