Skip to main content

Interactive visualization dashboards for the MCDA Python ecosystem

Project description

mcda-viz

Visualization library for the MCDA Python ecosystem. Provides interactive Dash dashboards and Plotly plots for exploring and presenting MCDA results.

Built on mcda-core, maintained by the SMG research group at ULB.

Installation

pip install mcda-viz

Method-specific dashboards require the corresponding library as an extra:

pip install mcda-viz[promethee]   # PrometheeDashboard — adds mcda-promethee

Future extras will follow the same pattern as new method libraries are added to the ecosystem.

Python ≥ 3.9.

Quick start

PROMETHEE dashboard

from mcda_core import PerformanceTable
from promethee import PrometheeII
from promethee.preferences.parameters import ParametersPromethee
from mcda_viz import PrometheeDashboard

table = PerformanceTable(...)
params = ParametersPromethee(...)
result = PrometheeII(table, params)
PrometheeDashboard(result, title="My analysis").run(debug=True)

MAUT dashboard

from mcda_methods import MAUT
from mcda_viz import MAUTAnalysisDashboard

maut = MAUT(table, params)
MAUTAnalysisDashboard(maut, title="MAUT Analysis").run(debug=True)

See example_dashboards/ for complete runnable examples with real datasets.

What's included

Dashboards

class description
PrometheeDashboard GAIA plane + net flows parallel coordinates plot; live recomputation when weights or preference functions change
MAUTAnalysisDashboard Parallel coordinates in evaluation and utility space; criterion-wise A vs B comparison; utility function plots

Both dashboards include:

  • Alternative filter / ranking checklist (doubles as a selection panel)
  • Highlight panel — assign any CSS colour to any alternative
  • Weight sliders with automatic normalisation

Plots

Standalone Plotly figure builders — usable outside of a dashboard:

class / function description
GaiaPlanePlot Biplot of PROMETHEE GAIA projected coordinates
ParallelPlot Parallel coordinates for raw performance tables or utility space
MAUTComparisonPlot Criterion-wise weighted utility difference between two alternatives
build_maut_utility_plots List of piecewise-linear utility function curves, one per criterion

All plot classes expose a build_figure() method returning a plotly.graph_objects.Figure.

from mcda_viz import GaiaPlanePlot
from promethee import PrometheeGAIA

gaia = PrometheeGAIA(performance_table=table, parameters=params)

fig = GaiaPlanePlot(
    gaia,
    visible_alternatives=["A", "B", "C"],   # optional subset
    highlight={"A": "red"},                  # optional colour map
).build_figure()   # plotly Figure — display in notebook or export

Components (building blocks for custom dashboards)

Each panel inside the built-in dashboards is a standalone DashboardComponent subclass. You can assemble them freely to build your own dashboard:

component description
AlternativeSelectorComponent A / B dropdown for pairwise comparison
AlternativeFilterComponent Text-based alternative filter
ComparisonDescriptionComponent Textual summary of A vs B weighted utility difference
CriterionPlotsComponent Scrollable row of criterion utility function plots
GaiaPlanePlotComponent GAIA plane wrapped as a Dash component
HighlightComponent Colour picker — assign colours to alternatives
LegendComponent Colour legend panel
ParallelPlotComponent Parallel coordinates wrapped as a Dash component
ParametersComponent Weight sliders and preference function selectors (PROMETHEE)
RankingChecklistComponent Ranked list with checkboxes for filtering
RankingComponent Read-only ranked list
StoreComponent Invisible dcc.Store for shared dashboard state

Architecture

src/mcda_viz/
├── dashboards/
│   ├── core/          # BaseDashboard, DashboardComponent, DashboardState, shared IDs
│   ├── components/    # Reusable Dash components
│   ├── maut_analysis_dashboard.py
│   └── promethee_dashboard.py
├── plots/             # Pure Plotly figure builders
└── base/              # Shared plot utilities

DashboardState is a lightweight container (alternative names, criterion names, and optionally scores and ranking) instantiated once per dashboard and injected into every component that needs it.

BaseDashboard provides shared callbacks (highlight apply/reset, weight normalisation) and a Dash app factory. Subclass it to build a custom dashboard:

import dash_bootstrap_components as dbc
from dash import html
from mcda_viz import BaseDashboard, DashboardState, HighlightComponent, StoreComponent

class MyDashboard(BaseDashboard):
    def __init__(self, alternative_names, criteria_names):
        self.state = DashboardState(
            alternative_names=alternative_names,
            criteria_names=criteria_names,
        )
        self.app = self._create_app("My Dashboard")
        self.store_component = StoreComponent()
        self.highlight_component = HighlightComponent(self.state)
        self.app.layout = dbc.Container([
            self.store_component.layout(),
            self._header_row(),
            self.highlight_component.layout(),
        ])
        self._register_highlight_callback(self.app)

    def run(self, **kwargs):
        self.app.run(**kwargs)

Ecosystem

Part of the modular MCDA Python ecosystem built on mcda-core. See mcda-core for the full list of compatible libraries.

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcda_viz-0.2.0.tar.gz (32.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcda_viz-0.2.0-py3-none-any.whl (41.6 kB view details)

Uploaded Python 3

File details

Details for the file mcda_viz-0.2.0.tar.gz.

File metadata

  • Download URL: mcda_viz-0.2.0.tar.gz
  • Upload date:
  • Size: 32.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for mcda_viz-0.2.0.tar.gz
Algorithm Hash digest
SHA256 3dbe13be720fb23b587b70a6711199fe81c932f886e05680cc4763ef19588b30
MD5 93bf918927da360ccb2234ee0863c228
BLAKE2b-256 23516ce8ce9ad5a83330a028266231037f89b7c0369f9c70418902f10896f5c2

See more details on using hashes here.

File details

Details for the file mcda_viz-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: mcda_viz-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 41.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for mcda_viz-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 166e9cdc85292e64b5e379ea064a1c6727e41d3d1cc2258795c2db3002d757db
MD5 93fbb1d225592352ec5189d540a1eaed
BLAKE2b-256 3469c6c3ad20bb5fc51c018ce36b070e4e670ae1e6cb39148fa44867bd84bd4c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page