Power BI 表格矩阵内嵌平滑折线图
Power BI有内置的折线图视觉对象,为什么要在表格矩阵内嵌折线图?最大的原因是表格矩阵具有扩展性,可以添加折线趋势以外的其他信息,供用户综合判断。
本图选自:Power BI十大有业务分析力的图表
表格矩阵内置的迷你折线图不仅样式丑陋而且功能有限。我们可以使用SVG度量值自定义折线图。
国内外很多博主(包括我)之前都有分享过SVG折线图度量值(不了解SVG参考Power BI SVG制图入门知识2025版),风格都比较刚直,类似下图:
今天分享一个平滑的效果,供读者使用:
度量值如下,标记为图像URL后即可在表格矩阵加载,也可用在新卡片图视觉对象。
代码语言:javascript代码运行次数:0运行复制SVG.折线图.平滑 =
VAR XMinDate =
MIN ('数据'[Date] )
VAR XMaxDate =
MAX ('数据'[Date] )
VAR MaxWidth = 500 //图表的宽度
VAR MaxHeight = 300 //图表的高度
VAR Space_X = 10
VAR Space_Y = 10
VAR YMinValue =
MINX ( ALLSELECTED ( '数据'[Date] ), [指标] )
VAR YMaxValue =
MAXX ( ALLSELECTED ( '数据'[Date] ), [指标] )
VAR SVG_Table =
ADDCOLUMNS (
ADDCOLUMNS(
'数据',
"Index", RANKX('数据', [Date], , ASC)
),
"X", MaxWidth * DIVIDE ( [Date] - XMinDate, XMaxDate - XMinDate ),
"Y", MaxHeight * DIVIDE ( [指标] - YMinValue, YMaxValue - YMinValue )
)
VAR PathData =
CONCATENATEX(
SVG_Table,
IF(
[Index] = 1,
"M" & [X] & "," & (MaxHeight - [Y]),
VAR PrevX = MAXX(FILTER(SVG_Table, [Index] = EARLIER([Index]) - 1), [X])
VAR PrevY = MAXX(FILTER(SVG_Table, [Index] = EARLIER([Index]) - 1), [Y])
VAR ControlX = (PrevX + [X]) / 2
VAR ControlY = (MaxHeight - PrevY)
RETURN
" C" & ControlX & "," & ControlY & " " & ControlX & "," & (MaxHeight - [Y]) & " " & [X] & "," & (MaxHeight - [Y])
),
" ",
[Date]
)
RETURN "data:image/svg+xml;utf8,<svg xmlns='' viewBox='" & - Space_X & " " & - Space_Y & " " & MaxWidth + Space_X * 2 & " " & MaxHeight + Space_Y * 2 & "'>" &
"<!--微信公众号、知乎:wujunmin-->" &
"<path fill='none' stroke='LightGrey' stroke-width='3' d='" & PathData & "'/></svg>"
以下是零售业务中的效果对比:
读者将以上代码给到AI后可以修改风格(DeepSeek最近的升级可以帮助你快速实现:DeepSeek昨日升级,Power BI用户利好)
比如商务简约风:
蒸汽朋克风:
赛博朋克风: