Construirea unei vizualizări matrix mai bune cu Deneb în Power BI
Matrix cu bare
Unul dintre clienții noștri avea o cerință precisă: dorea să vadă progresul pe sarcină și pe unitate pe aceeași pagină.
Soluția evidentă era un matrix Power BI.
Am întâmpinat rapid câteva limitări. Există o limită maximă de 100 de coloane, ceea ce reprezintă o constrângere pentru noi. În plus, apariția a 3 bare de derulare face dificilă vizualizarea tuturor datelor într-un singur cadru. De asemenea, lățimea fiecărei coloane trebuie setată manual, ceea ce duce la diferențe.

Alături și sub acesta, încercăm să adăugăm un grafic cu bare pentru a afișa procentele de progres. Am întâmpinat o provocare mai mare: având trei vizualizări pe aceeași pagină, a fost dificil să aliniem perfect rândurile și coloanele matrix-ului cu graficele cu bare, ceea ce a dus la o prezentare mai puțin ideală.
Așadar, am început să explorăm o soluție personalizată pentru a obține rezultatul dorit.
Am pornit de la ideea inspirată de heatmap-ul Deneb al lui Kerry Kolosko.
Așadar, am ales custom visual-ul Deneb pentru această sarcină. Am organizat eficient toate sarcinile în această vizualizare, oferind o experiență de utilizare simplificată, cu o singură bară de derulare. Adăugarea barelor de progres pe rânduri și coloane oferă o modalitate directă de a urmări progresul proiectului. Această actualizare asigură o imagine de ansamblu clară și concisă a întregului proiect. Ne-a plăcut rezultatul, iar clientul a fost mulțumit.

Construirea unei vizualizări matrix mai bune cu Deneb în Power BI
Codul Deneb pe care îl folosim:
{
"data": {"name": "dataset"},
"spacing": 10,
"bounds": "full",
"vconcat": [
{
"spacing": 5,
"bounds": "full",
"hconcat": [
{
"width": 1050,
"height": 550,
"mark": {
"type": "rect",
"stroke": "white",
"tooltip": true },
"encoding": {
"y": {
"field": "Task",
"type": "ordinal",
"title": null,
"axis": {
"domain": false,
"ticks": false,
"labels": true,
"labelFontSize": 10,
"labelAngle": 0,
"labelPadding": 5 },
"sort": {
"op": "max",
"field": "Sort Column" }
},
"x": {
"field": "Building",
"type": "ordinal",
"title": null,
"axis": {
"domain": false,
"ticks": false,
"labels": true,
"labelAngle": 320,
"labelFontSize": 10,
"orient": "top" },
"sort": {
"op": "max",
"field": "Building" }
},
"color": {
"field": "First Status Matrix",
"type": "nominal",
"title": "Status Matrix",
"scale": {
"domain": [
"1",
"2",
"3" ],
"range": [
"#04A146",
"#D9B300",
"#E8EAFA" ]
},
"legend": null },
"tooltip": [
{
"field": "Building",
"type": "nominal",
"aggregate": "max" },
{
"field": "First Status Matrix",
"type": "nominal",
"aggregate": "max" },
{
"field": "Task",
"type": "nominal",
"aggregate": "max" }
]
}
},
{
"width": 30,
"height": 550,
"layer": [
{
"mark": {
"type": "bar",
"stroke": null,
"cornerRadiusEnd": 2,
"tooltip": true,
"color": "lightgrey" },
"encoding": {
"y": {
"field": "Task",
"type": "nominal",
"axis": null,
"sort": {
"op": "max",
"field": "Sort Column" }
},
"x": {
"field": "AVG of Progress %",
"type": "quantitative",
"aggregate": "mean",
"axis": null },
"text": {
"field": "AVG of Progress %",
"type": "quantitative",
"aggregate": "mean",
"format": ".1%" }
}
},
{
"mark": {
"type": "text",
"align": "left",
"baseline": "middle",
"dx": 1,
"dy": -1,
"fontSize": 7,
"tooltip": true,
"color": "black" },
"encoding": {
"x": {
"field": "AVG of Progress %",
"type": "quantitative",
"aggregate": "mean" },
"y": {
"field": "Task",
"type": "nominal",
"title": "Task",
"sort": {
"op": "max",
"field": "Sort Column" }
},
"text": {
"field": "AVG of Progress %",
"type": "quantitative",
"aggregate": "mean",
"format": ".1%" }
}
}
]
}
]
},
{
"height": 50,
"width": 1050,
"layer": [
{
"mark": {
"type": "bar",
"stroke": null,
"cornerRadiusEnd": 2,
"tooltip": true,
"color": "lightgrey" },
"encoding": {
"x": {
"field": "Building",
"axis": null,
"sort": {
"op": "max",
"field": "Building" }
},
"y": {
"field": "AVG of Completion %",
"type": "quantitative",
"aggregate": "mean",
"axis": null }
}
},
{
"mark": {
"type": "text",
"align": "left",
"baseline": "middle",
"angle": 270,
"dx": 1,
"dy": -1,
"fontSize": 10,
"tooltip": true,
"color": "black" },
"encoding": {
"x": {
"field": "Building",
"sort": {
"op": "max",
"field": "Building" }
},
"y": {
"field": "AVG of Completion %",
"type": "quantitative",
"aggregate": "mean",
"axis": null },
"text": {
"field": "AVG of Completion %",
"aggregate": "mean",
"type": "quantitative",
"format": ".1%" }
}
}
]
}
]
}