Construirea unei vizualizări matrix mai bune cu Deneb în Power BI

PROIECT
7
/
7

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.

Captură de ecran a unui computer. Descriere generată automat

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.

O grilă verde și albă cu pătrate albe și galbene. Descriere generată automat

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%"            }
          }
        }
      ]
    }
  ]
}