歡迎光臨
每天分享高質量文章

Tableau 小技巧之分離 Box plot 和 Unit Histogram

(點擊上方公號,快速關註我們)


英文:dataplusscience,轉自:資料派(ID:datapi),翻譯:和中華


Steve Wexler在他最近的一篇博客文章《Is this better than a Jitterplot? Could be》中探索了可視化jitterplot圖(帶有隨機jitter的點圖,jitter用來區分點)的替代方法:


博客文章鏈接:

https://www.datarevelations.com/betterthanjitterplot.html


在本文中,我將展示如何創建與單位直方圖(unit histogram)區分的箱形圖(box plot)。

 

譯者註:jitter是一個隨機值,分配給點用來將其區分,這樣就不會重疊了,詳細內容可以參見下麵這篇文章:


Methods for Creating Jitter in Tableau:

https://www.dataplusscience.com/TableauJitter.html


單位直方圖


史蒂夫在他的帖子以及另一篇文章”Tableau visualization is here“中描述瞭如何製作單位直方圖:


Tableau visualization is here:

https://public.tableau.com/profile/swexler


我將用它作為此文章的起點,因此如果您想跟著練習,請在此處下載他的workbook:


下載鏈接:

https://public.tableau.com/workbooks/DataRevelations_MeVsOthers_UnitHistogram.twb

 

這是史蒂夫做的單位直方圖:


 

刪除分步帶(distribution bands)並添加箱形圖


下載並打開Steve的Tableau workbook後,右鍵單擊主儀錶板選項卡“Salary Comparison Jitterplot Dashboard(2)”並選擇“Unhide All Sheets”。

 

轉到名為Breakout with Quartiles的工作表。單擊分佈帶中的線並將其拖離Tableau Canvas。另一種方法是右鍵單擊該線並選擇“刪除”。對分步帶也重覆此步驟。您現在應該得到了一個沒有分佈帶的單位直方圖。

 

單擊左上角的“分析”選項卡。單擊並將箱形圖拖動到Tableau canvas並將其放在SUM(continuous Bin)上。這將為單位直方圖添加一個箱形圖。

 

這很簡單,但請註意,箱形圖的中心位於窗格中並改寫了一些點。

 


讓我們探討一些將箱形圖移開的辦法。


改變箱形圖的位置


第一種方法是通過創建更多點來移動箱形圖。我們將通過創建另一個膠囊(pill)並使用雙軸來實現這一標的:

 

雙擊INDEX() 膠囊右側白色區域的Column Shelf。這將允許您輸入行內公式。輸入-20並按Enter鍵。


右鍵單擊新膠囊並選擇“Dual Axis”。右鍵單擊圖表頂部的新二級X軸,然後選擇“Synchronize Axis”。

 

在SUM(-20)的標記卡上,單擊顏色並將不透明度設置為0%,將邊框設置為“None”。

 

您現在應該得到了一個單位直方圖,它從箱形圖的中心開始。

 

 

但是,您會註意到許多點仍然隱藏在箱形圖的後面。您可以將X軸更改為固定以調整位置,但我認為很難以不與點重疊並能顯示所有點的方式固定箱形圖的位置。


將箱形圖與單位直方圖分開


分離箱形圖和點圖的最明顯方法是為每個箱形圖和單位直方圖創建工作表。在本例中,有四代,所以將有八個工作表。這種方法允許您為每一代創建一個不同的視圖,一個帶有箱形圖,另一個帶有單位直方圖,並且可以非常直接地複製整個工作表並相應地調整過濾器以創建每個視圖。但這並不是一個好辦法,當你有更多類別時,很快就會變得笨拙。

 

另一種分離它們的方法是複製資料。這可以使用自定義SQL,Tableau Prep,Alteryx或在原始資料源中預處理來完成。為了便於演示,您可以在此處下載重覆的資料:


下載鏈接:

https://www.dataplusscience.com/files/BoxandUnitHisto.xlsx


此電子錶格只是簡單地複製原始資料並帶有一個名為“Column”的新列。第一組資料在此新列中具有值“box”,第二組資料具有值“dots”。

 

從頂部選單中選擇“Data”,然後選擇“New Data Source”。


選擇“Microsoft Excel”並選擇您下載的檔案”BoxandUnitHisto.xlsx”。這將打開新的資料源。


再次單擊”Breakout with quartiles”選項卡來傳回Tableau canvas。再次從頂部選單中選擇“Data”,然後選擇“Replace Data Source”。


“Current:”資料源應設置為”Reshaped Survey Data”,“Replacement:”資料源應設置為”Sheet1(BoxandUnitHisto)”。


這將使用複製了所有記錄的新資料源替換原來的單個資料源,並具有一個名為“Column”的新欄位。

 

複製資料集的一個大問題是計算可能會受到影響。例如,Continuous Bin,它是Y軸上的主要欄位,現在已經翻倍了。有很多方法可以解決這個問題,但是我們將對此進行簡單的修複,即將數字除以2。註意這可能不是所有情況下的最佳解決方案:

 

右鍵單擊Continuous Bin並將/ 2添加到公式中,以便該值除以2。

 

在Breakdown之後將Column膠囊拖到Column shelf上。向上拖動SUM(-20)離開canvas以刪除膠囊或右鍵單擊並選擇“Remove”。

 

右鍵單擊Continuous Bin並選擇“Duplicate”

 

右鍵單擊新欄位Continuous膠囊(copy)並選擇“Edit”

 

調整公式:IF [Column] =’box’ then INT([Value] / [Bin Size])* [Bin Size] / 2 ELSE null END

 

將新的Continuous膠囊(copy)拖動到“Continuous Bin”旁邊的Rows shelf

 

右鍵單擊Continuous膠囊(copy)並選擇“Dual Axis”

 

右鍵單擊右側的新二級Y軸,然後選擇“Synchronize Axis”

 

將Dots窗格中的箱形圖從Tableau Canvas中拖出以將其刪除,或者右鍵單擊Dots窗格中的箱形圖並選擇“Remove”

 

現在,您將擁有一個僅在標有“box”的左窗格視窗中的箱形圖,而不是標記為“dots”的第二個窗格。讓點在“box”窗格中消失有點棘手。我想你會發現不透明度,顏色,邊框和尺寸在此刻都不起作用。所以我們將創建另外兩個欄位來處理這個問題:

 

計算欄位:Col Num

公式:IF [Column] =’box’ THEN 0 ELSE 1 END

 

計算欄位:Count

公式:IF avg([Col Num])= 0 THEN null ELSE index()END

 

使用新欄位Count替換Column shelf上的INDEX()


右鍵單擊Column shelf上的Count,然後選擇“Compute Using”並將其設置為“Resp ID”

 

您現在應該在第一個列窗格中有一個箱形圖,在第二個列窗格中有一個單位直方圖。其餘的只是根據需要進行格式化:

 

 

在圖表區域中單擊滑鼠右鍵,然後選擇“Format”

 

選擇“Borders”並將“Column Divider Level:”向左滑動一個位置。

 

右鍵在二級Y軸的Continuous膠囊(copy)點擊並取消選中“Show Header”以刪除

 

右鍵單擊帶有“box”和“dots”的列標題,然後取消選中“Show Header”以刪除

根據需要調整點的顏色。



複製資料肯定會有缺點,但是,這裡的最終結果是一個不與單位直方圖重疊的箱形圖,並且與在點的頂部繪製的典型箱形圖相比具有一些優點。這種方法也可以用於分佈帶。只需用分佈帶替換箱形圖窗格。

 

 

這也可以與jitterplot一起使用,但我發現單位直方圖比使用jitter隨機放置點更有用。

 

 

我希望這篇文章對您有所幫助。如果您有任何問題,請隨時給我發電子郵件[email protected]

【關於投稿】


如果大家有原創好文投稿,請直接給公號發送留言。


① 留言格式:
【投稿】+《 文章標題》+ 文章鏈接

② 示例:
【投稿】
《不要自稱是程式員,我十多年的 IT 職場總結》:http://blog.jobbole.com/94148/


③ 最後請附上您的個人簡介哈~

看完本文有收穫?請轉發分享給更多人

關註「資料分析與開發」,提升資料技能

赞(0)

分享創造快樂