在《趣味数据分析》这本书看到一个血压图表,可以很方便的依据收缩压和舒张压数值,得到所在象限,从而判断血压是否正常。以下是Power BI的模拟效果
准备一份血压分类数据,含收缩压、舒张压临界值,顺序,以及每个分类的颜色。
新建血压范围图表度量值:
代码语言:javascript复制血压范围图表 =
VAR Text_Size = 6
VAR t=
ADDCOLUMNS (
'血压范围',
"Rect",
" <rect x='0' y='" & 180 - [收缩压] & "' width='" & [舒张压] & "' height='" & [收缩压] & "' fill='" & [颜色] & "'/>",
"Text",
"<tspan x='" & [舒张压] & "' y='" & 180 - [收缩压] Text_Size & "'>" & [分类] & "</tspan>",
"LabelY",
"<tspan x='1' y='" & 180 - [收缩压] Text_Size - 2 & "'>" & [收缩压] & "</tspan>",
"LabelX",
"<tspan x='" & [舒张压] & "' y='178'>" & [舒张压] & "</tspan>"
)
RETURN
"data:image/svg xml;utf8," & "
<svg xmlns='http://www.w3.org/2000/svg' height='180' width='110'><g>
<title>公众号、知乎、B站:wujunmin</title>"
& CONCATENATEX ( t, [Rect],, [索引], DESC ) & "
<text font-size='" & Text_Size & "' text-anchor='end' font-weight='bold'>"
& CONCATENATEX ( t, [Text] ) & "</text>
<text font-size='" & Text_Size - 2 & "' text-anchor='start' id='wujunmin'><tspan x='1' y='178'>0</tspan>"
& CONCATENATEX ( t, [LabelY] ) & "</text>
<text font-size='" & Text_Size - 2 & "' text-anchor='end'>"
& CONCATENATEX ( t, [LabelX] ) & "</text> </g>
</svg> "
将度量值放入视觉对象Image by cloudscope:
Image options中Image fit设置为contain:
图表设置即完成。也可以不使用外部数据,SELECTCOLUMNS在度量值内部新建一个虚拟表。
该图表上方还可以叠加散点图,以判断检测人员落入的区间分布,读者可以思考下如何实现。