Skip to content

Commit 7879d79

Browse files
spec: add linked-views-selection specification (#3348)
## New Specification: `linked-views-selection` Related to #3344 --- ### specification.md # linked-views-selection: Multiple Linked Views with Selection Sync ## Description Multiple coordinated plots where selecting data in one view automatically highlights or filters corresponding data points in all other views. This brushing-and-linking interaction pattern is fundamental for exploratory data analysis, allowing users to discover relationships across different visual representations of the same dataset. By selecting a cluster in a scatter plot, for example, users can instantly see how those points distribute in histograms, how they appear in parallel coordinates, or which categories they belong to. ## Applications - Exploratory data analysis dashboards where analysts investigate multivariate datasets by brushing across scatter plots, histograms, and categorical views - Customer segmentation tools where selecting a group in one dimension reveals their characteristics across demographics, behavior, and transactions - Scientific data exploration comparing different measurements or experimental conditions with synchronized highlighting - Financial portfolio analysis linking asset allocation views with performance metrics and risk indicators ## Data - `x` (numeric) - Values for scatter plot horizontal axis - `y` (numeric) - Values for scatter plot vertical axis - `category` (categorical) - Group labels for bar chart or color encoding - `value` (numeric) - Additional numeric dimension for histogram or secondary visualizations - Size: 100-1000 points (interactivity works best with moderate dataset sizes) - Example: Iris dataset or simulated multivariate data with numeric and categorical columns ## Notes - Implement at least 2-3 coordinated views (e.g., scatter plot + histogram + bar chart) - Selection in any view should highlight corresponding points in all other views - Use consistent color encoding across all views for the same data points - Unselected points should be visually de-emphasized (reduced opacity or gray) - Include a clear selection mechanism (brush, click, or lasso) - Provide a reset/clear selection button to restore full view - Consider showing selection count or summary statistics - Libraries with native linked selection support (Altair, Bokeh, Plotly) should leverage those features --- **Next:** Add `approved` label to the issue to merge this PR. --- :robot: *[spec-create workflow](https://github.com/MarkusNeusinger/pyplots/actions/runs/20832699525)* Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent 9802363 commit 7879d79

2 files changed

Lines changed: 64 additions & 0 deletions

File tree

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# linked-views-selection: Multiple Linked Views with Selection Sync
2+
3+
## Description
4+
5+
Multiple coordinated plots where selecting data in one view automatically highlights or filters corresponding data points in all other views. This brushing-and-linking interaction pattern is fundamental for exploratory data analysis, allowing users to discover relationships across different visual representations of the same dataset. By selecting a cluster in a scatter plot, for example, users can instantly see how those points distribute in histograms, how they appear in parallel coordinates, or which categories they belong to.
6+
7+
## Applications
8+
9+
- Exploratory data analysis dashboards where analysts investigate multivariate datasets by brushing across scatter plots, histograms, and categorical views
10+
- Customer segmentation tools where selecting a group in one dimension reveals their characteristics across demographics, behavior, and transactions
11+
- Scientific data exploration comparing different measurements or experimental conditions with synchronized highlighting
12+
- Financial portfolio analysis linking asset allocation views with performance metrics and risk indicators
13+
14+
## Data
15+
16+
- `x` (numeric) - Values for scatter plot horizontal axis
17+
- `y` (numeric) - Values for scatter plot vertical axis
18+
- `category` (categorical) - Group labels for bar chart or color encoding
19+
- `value` (numeric) - Additional numeric dimension for histogram or secondary visualizations
20+
- Size: 100-1000 points (interactivity works best with moderate dataset sizes)
21+
- Example: Iris dataset or simulated multivariate data with numeric and categorical columns
22+
23+
## Notes
24+
25+
- Implement at least 2-3 coordinated views (e.g., scatter plot + histogram + bar chart)
26+
- Selection in any view should highlight corresponding points in all other views
27+
- Use consistent color encoding across all views for the same data points
28+
- Unselected points should be visually de-emphasized (reduced opacity or gray)
29+
- Include a clear selection mechanism (brush, click, or lasso)
30+
- Provide a reset/clear selection button to restore full view
31+
- Consider showing selection count or summary statistics
32+
- Libraries with native linked selection support (Altair, Bokeh, Plotly) should leverage those features
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Specification-level metadata for linked-views-selection
2+
# Auto-synced to PostgreSQL on push to main
3+
4+
spec_id: linked-views-selection
5+
title: Multiple Linked Views with Selection Sync
6+
7+
# Specification tracking
8+
created: 2026-01-08T21:41:58Z
9+
updated: null
10+
issue: 3344
11+
suggested: MarkusNeusinger
12+
13+
# Classification tags (applies to all library implementations)
14+
# See docs/reference/tagging-system.md for detailed guidelines
15+
tags:
16+
plot_type:
17+
- scatter
18+
- histogram
19+
- bar
20+
- multi
21+
data_type:
22+
- numeric
23+
- categorical
24+
domain:
25+
- general
26+
- statistics
27+
- business
28+
features:
29+
- interactive
30+
- multi
31+
- coordinated
32+
- brushing

0 commit comments

Comments
 (0)