[Redash] 圖表 Chart 進階介紹

Mars Weng
MarsW-Redash
Published in
5 min readOct 17, 2018

平常 Y 軸可以選不同欄位的資料,
但當你希望用某個資料 Y 軸維度但他卻在同一欄的時候,
Group by 功能就能派上用場。

以下的例子是想看 英超曼城隊伍在每場比賽的狀況

SELECT SUBSTRING_INDEX(p.Name ," ",1) as Name, a.* 
FROM PremierLeague.Actions a
INNER JOIN PremierLeague.Players p ON a.PlayerID = p.PlayerID
WHERE a.TeamID = 43 and a.ShotsonTargetincgoals>0

首先先選擇 X 軸為 MatchID, Y 軸為 ShotsonTargetincgoals,
就可以看到曼城射正的比例主要集中在哪一場比賽,
而如果想要同樣看射正分布狀況,但要細到曼城的每一名球員,
就可以在 Group by 選擇球員姓名 Name。

從圖中看到圓餅圖中畫越細的那幾名,也就是他們有貢獻射正的比賽場次越多,通常都是球隊的前鋒或是有遠射能力的中場(eg. Agüero、Silva)

而如果是想看每一場比賽,球員的射正貢獻度變化,
也就是一名球員射正占該場比賽的佔比,
Normalize values to percentage 可以把同一 X 軸的資料轉換成百分比,
但同時 Y 軸的值也就變成 0~100%,所以會看到圖中綠色那條鋒線(比賽編號118、147),雖然貢獻度是50%->100%,但射正數卻是從4->2。

此外,Chart 互動式的操作還有不少功能,游標滑上圖式,
可以看到對應該 X 軸值的各 Y 軸資料,
預設就是 Compare data on hover,也就是圖表右上方功能列的最右邊圖式;
而他左邊兩個圖示分別是 Show closest on hover & Toggle Spike Lines
則可針對單一 Y 軸資料做仔細比較。

若針對右方某一筆 Y 軸資料點擊兩次(eg.42544),
就可只觀察該資料的圖表。

而與圖表操作預設是 Zoom
可以針對圖表內做拖曳,就可以針對拖曳的區塊做放大檢視的功能;
其他的 Zoom in / Zoom outAutoscale / Reset axes
也可以做檢視區域大小的調整或重置。

也可以改從 Zoom 切換成 Pan,與圖表的互動就會改成平移資料;
最左邊的 Download plot as a png 也算是我很常用的功能,
可以針對現在互動過後的圖表畫面匯出成png檔。

使用案例

在我們公司,Group by 通常會是折線圖中拿來做分類常用的功能,
X 軸通常為時間
eg.

  • 監控系統會看各機器的狀況:Y 軸是以溫度 or 記憶體,
    以機器名稱來 Group by
  • 旅遊電商的訂單可能來自於團體旅遊、機票、飯店等不同類型,
    Y軸就會是訂單金額/數量,而以訂單類型來 Group by

Normalize 我們比較常用來搭配折線圖看佔比變化,
eg. 團遊的訂單人數可分成單人、雙人、小團、大團等分類,
但因為訂單數量會隨著公司成長而提升,單看數字的成長比較不容易看單張訂單人數分布的佔比變化,就會使用 Normalize 功能。

其他幾個功能手邊還沒有真正的使用案例,
不過也是趁此機會了解一下該功能使用起來的結果:

Errors column 是可以選定某個值為誤差值,
例如這邊選定 WinningGoal 為誤差值(但實際上這個資料沒有意義,只是為了做圖),像是比賽編號 202 WinningGoal =1,他就會把圖表上的資料進行 ± 1 的範圍標記。

使用情境猜想可能是在估算產出等資料的時候,因為在不同情境會有不定的誤差,利用 Errors column 在做圖就能很明顯看的出來產出落在的範圍。

Stacking 將每種不同的圖的上端對齊,以此例來講,就是所有點會對齊該場 MatchID 的最高值(同時要考慮左右 Y 軸)

此為系列文章,傳送門在此

--

--