plotly / plotly/plotly.rs

Tracking: trace types not yet exposed in plotly.rs (plotly.js 3.7.0 parity)

Offen
#422 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Rust
Sterne
1.5k
Forks
128
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Tracking: trace types not yet exposed in plotly.rs (plotly.js 3.7.0 parity)

Summary

Measured against the actively-supported trace types in plotly.js 3.7.0, plotly.rs exposes 27 of 46, leaving 19 unimplemented. This issue tracks the remaining trace types so contributions can be coordinated and duplicate work avoided.

plotly.js 3.7.0 defines 49 trace types, but 3 are deprecated (the Mapbox family — see below) and are excluded from the parity target. The list was generated by diffing the trace type tags plotly.rs can serialize (the PlotType enum) against the authoritative plot-schema.json shipped with plotly.js v3.7.0.

Note: this is trace-type coverage. Attribute-level parity for the already-implemented traces is being addressed separately in the plotly.js 3.7 attribute backfill work.

Deprecated in plotly.js 3.7.0 — excluded from parity (3)

These are deprecated upstream in favour of the MapLibre map subplot traces (migration guide):

Deprecated trace Recommended replacement plotly.rs status
scattermapbox scattermap both already exposed
densitymapbox densitymap both already exposed
choroplethmapbox choroplethmap replacement already exposed; deprecated trace not implemented (and won't be)

plotly.rs already ships every recommended map replacement, so there is no coverage gap here — no action needed. The two deprecated traces that are implemented (scattermapbox, densitymapbox) can be retained for back-compat and eventually deprecated in lockstep with upstream.

Currently exposed — actively-supported (27)

bar · box · candlestick · choropleth · choroplethmap · contour · densitymap · heatmap · histogram · histogram2dcontour · image · mesh3d · ohlc · pie · sankey · scatter · scatter3d · scattergeo · scattergl · scattermap · scatterpolar · scatterpolargl · sunburst · surface · table · treemap · violin

(plus the deprecated scattermapbox and densitymapbox, listed above)

Missing — actively-supported (19)

3D scientific / volumetric

  • cone — 3D vector / quiver fields
  • streamtube — 3D flow streamlines
  • isosurface — 3D isosurfaces from volume data
  • volume — 3D volume rendering

Carpet family (needs a shared carpet-axis abstraction)

  • carpet — base carpet axis system
  • contourcarpet — contours on a carpet axis
  • scattercarpet — scatter on a carpet axis

Cartesian statistical / financial

  • histogram2d — 2D histogram heatmap
  • funnel — funnel charts
  • waterfall — waterfall / bridge charts

Parallel-coordinate

  • parcoords — parallel coordinates (continuous)
  • parcats — parallel categories (categorical)

Specialized subplots

  • barpolar — bar charts on a polar axis (wind-rose)
  • scatterternary — scatter on a ternary (3-component) plot
  • scattersmith — scatter on a Smith chart (RF / impedance)

Hierarchical

  • icicle — icicle charts (sibling of sunburst / treemap)

Other

  • indicator — KPI gauges / number + delta displays
  • splom — scatter-plot matrix
  • funnelarea — funnel-area (pie-like funnel)
Suggested prioritization
  • Cheap wins — close siblings of existing traces that can reuse most of their building blocks: histogram2d (cf. histogram2dcontour / heatmap) and icicle (cf. sunburst / treemap).
  • High user demand — common business-chart types: indicator, funnel, waterfall, barpolar.
  • Larger effort — the carpet family (carpet + contourcarpet + scattercarpet) depends on first modelling a shared carpet-axis abstraction.
Notes for implementers

Adding a trace follows the established pattern (see CONTRIBUTING.md / CLAUDE.md):

  1. Create plotly/src/traces/<name>.rs, derive FieldSetter with #[field_setter(box_self, kind = "trace")].
  2. Add the corresponding PlotType variant (with the correct serde rename).
  3. Implement Trace::to_json, then re-export from traces/mod.rs and lib.rs.
  4. Add a serialize round-trip test and a CHANGELOG.md entry.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit CONTRIBUTING.md und CLAUDE.md, sieh dir dann einen bestehenden Trace in plotly/src/traces/ und das PlotType-Enum an. Wähle einen nicht abgehakten Trace-Typ aus und füge sein Trace-Modul, die Enum-Variante, Exporte, einen Test für den Serialisierungs-Roundtrip und einen Eintrag in CHANGELOG.md gemäß dem etablierten Muster hinzu. Erledigt ist die Aufgabe, wenn der ausgewählte Trace verfügbar ist und korrekt serialisiert wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rust
Bereich
data-visualization
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
38/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.