http://mpvideo.qpic.cn/0bf2amaagaaa6uanpc3ypvpfaa6dambqaaya.f10003.mp4?dis_k=86b4c176a19487f6102b765b0e15c3b2&dis_t=1585128971
客户提出我们需要在无数个牌子中,高亮显示一个突出的,包括它的指标值,如下:
很显然,PowerBI默认并不支持。
但是罗叔提出的DAX驱动可视化可以化解这一尴尬局面,得到:
不光如此,如果真的有这么多牌子,我们还是希望得到实时对比效应的,我们更进一步,则有:
鼠标悬停时,实时比对,并用不同颜色区别不同的点,非常巧妙。值得一提的是一个超级细节:
为了快速区分对比项,这里用【所选】高亮显示。
制作方法
制作方法其实非常简单,如下:
我们将两个折线图重叠,分别是【1】和【2】,用树形图实现图例【3】以及一个普通的切片器【4】。
只不过这里需要使用 DAX 来判断需要的显示方式。
图形维度
这里使用非侵入式设计构造一个维度如下:
代码语言:javascript复制Dim.Product =
UNION(
ADDCOLUMNS(
VALUES( Model_Product[产品子类别] ) , "Type" , "Normal"
),
ROW( "产品子类别" , "所选" , "Type" , "Highlight" )
)
DAX 驱动可视化
接着,写出关键的度量值,如下:
代码语言:javascript复制KPI.Selected.Highlight =
VAR X = SELECTEDVALUE( 'Model_Product'[产品子类别] )
VAR Legend = SELECTEDVALUE( 'Dim.Product'[产品子类别] )
VAR LegendType = SELECTEDVALUE( 'Dim.Product'[Type] )
RETURN SWITCH( TRUE() ,
Legend = "所选" , CALCULATE( [KPI] , TREATAS( { X } , Model_Product[产品子类别] ) ) ,
LegendType = "Normal" , CALCULATE( [KPI] , TREATAS( { Legend } , Model_Product[产品子类别] ) )
)
这个度量值说来巧妙,需要您慢慢体会其中奥秘。
辅助图形
这里为了实现图例的辅助效果,创造性地使用了树形图,这是我们第二次在作图中实现这个技巧来制作图例,如下:
并且对其动态染色,如下:
代码语言:javascript复制Color.Highlight =
VAR ItemSelected = SELECTEDVALUE( Model_Product[产品子类别] )
VAR Legend = SELECTEDVALUE( 'Dim.Product'[产品子类别] )
RETURN IF ( ItemSelected = Legend , "#FFCB00" , "#E6E6E6" )
辅助设置
对于高亮的线,我们也做辅助设置,如下:
我们将默认的线宽设置为0,而只是保持:
完结,撒花。
总结
DAX驱动可视化的各种技法将收录在我们的课程《BI真经之BI可视化》中,《BI真经》共七部,学习 PowerBI 不可少,为什么,因为它是真经。