Power BI自定義條形圖的填充效果
Power BI內置的條形圖略顯乏味,只能填充各種顏色,本文試圖突破這一限制,將條形圖填充為各種形狀或者圖片。如下是模擬的幾種效果:



實現(xiàn)方式是DAX嵌入SVG圖形編碼,一個度量值即可生成上圖中的一種效果,條形填充內容可以是任意圖形。以下對制作過程進行簡要介紹。
1. 實現(xiàn)原理

以填充圓形為例,度量值如下:
<defs>定義了一個圓(circle標簽設置的圓心在5, 5坐標,半徑為4的紅色圓形),圓的名字叫wu,這個圓并不會在圖表中顯示,而是用來被后續(xù)引用。
<defs>中的pattern標簽使得定義的圓被平鋪。
被平鋪填充的對象是一個長方形,由rect標簽定義,這個長方形寬度為100,高度為10(略大于圓的直徑)。
<defs>可以比作印章,你只會刻一枚印章,但是卻可以印在無數(shù)文件上。rect相當于你要蓋章的文件。
上方的度量值中要蓋章的文件只是一個長方形,你可以同時為多個文件蓋章:

度量值中嵌入三個長方形都引用名稱為wu的圓:

上圖是長度一樣的三個條形,將條形長度動態(tài)變化即可實現(xiàn)我們需要的自定義填充條形圖。
2. 制作印章
如何制作印章,即如何定義<defs>?這里提供三種方案。
第一種純代碼法,例如上文定義了一個圓,圓心的位置、半徑、填充色為參數(shù)。
這種方法適用于簡單的圖形,還可以是圓形、正方形、三角形、五角星等。太過復雜的圖形考驗人的SVG功底,對SVG不太熟悉的讀者不建議使用此方法。

第二種網(wǎng)絡資源利用法,網(wǎng)上有豐富的SVG圖標資源,例如https://www.iconfont.cn/

選中需要的圖標,點擊復制SVG代碼,放入你的<defs>中,注意復制的代碼需要掐頭去尾,只保留中間的核心內容。


第二種方法的制約在于,圖片都是別人的,選擇仍然有限,無法滿足使用需求。這個時候需要祭出PPT大法。
將需要的圖形導入到PPT中,鼠標右鍵另存為SVG,記事本打開該SVG,復制代碼到你的<defs>中。

這種方法本質上是將其他格式的圖片轉換為SVG格式,再內嵌到度量值。有讀者可能會有疑問,為什么一定要轉換成SVG代碼,<defs>里面不能直接內嵌jpg、png嗎?
答案是可以的。但是Power BI目前沒有合適的載體展示這一功能,所以暫時不可用。直接使用jpg, png需要使用別的SVG方案,目前不適合這種蓋章法。

3. 完整度量值
以下給出文章開頭的示例樣式(填充圓形)度量值,讀者可舉一反三: