Add labels on sankey links - #7888
Conversation
|
If you are interested in this please let me know. #7870 was just merged into |
|
@wf-r go for it. You'll need to change the target branch to v4.0. |
I think I am not allowed to do it (or I don't find the option). Can you do this, please? |
|
Please have a look at this. |
…ominant-baseline, use block-shift like node labels), thread _d3locale/_meta/fallback through texttemplateString, and dedupe the orientation counter-transform into a shared uprightTransform helper.Also make opted-out traces free of per-link work by short-circuiting linkTextGetter to null.
|
I'm done for today. Things one could discuss:
|
… group (fixes z-order with entering link paths), thread the label selection through updateShapes/attachDragHandler/startForce instead of DOM-querying every drag frame, and build each link's model once via a shared linkModels cache instead of duplicating it for paths and labels; exiting labels now fade out like links, and per-link texttemplate lookups use pointNumber instead of the loop index. Also switch link.texttemplate to the shared texttemplateAttrs() helper for a standard description and %{meta} support. More details in draftlog.
|
|
I'm back, sorry I was busy with other work.
You are right,
Sankey nodes and links do a while the link label just does So if we e.g. filter links we get a slightly different behaviour between link label and link itself. |
Add permanent text labels to Sankey links
What
Adds persistent, always-visible text labels to Sankey links, analogous to the existing node
labels. Five new attributes under
link:link.textinfo"label","value","none"link.texttemplatetextinfowhen setlink.textfontlink.valueformatlink.valuesuffixWhy
Link information is currently hover-only, making Sankey diagrams unsuitable for static export
(PNG/SVG/print) wherever flow values or names need to be visible at all times. There is
long-standing community interest in this — see #4746.
External SVG overlays (the current workaround) are fragile: they break on node drags, require
timing hacks after layout transitions, and are excluded from
toImageexport. Native labelssolve all three problems.
How
Labels are rendered as real SVG
<text>elements inside the.sankeygroup, immediately afterthe link paths. This means:
handvlayouts with no extra handling.updateShapeshook — no separate drag listenerneeded.
toImage/PNG/SVG export — no overlay required.For circular (backward) links the label anchor reuses the same
circularPathDatamidpoint asthe hover label, so the position is consistent. Vertical centering on the anchor uses
dominant-baseline="central".Template rendering follows the established
funnel/piepattern viaLib.texttemplateString.Available template variables:
%{label},%{value},%{valueLabel}(formatted value +suffix),
%{source},%{target},%{customdata}.Backward compatibility
Fully backward compatible. All new attributes default to
textinfo: 'none'/texttemplate: '',so existing figures render identically. No existing tests or baselines are affected.
Related