feat: add Violin trace type#412
Open
jqnatividad wants to merge 3 commits into
Open
Conversation
Add the `Violin` trace with the full plotly.js violin attribute surface: bandwidth, box (inner mini box plot), meanline, KDE span/spanmode, scalegroup/scalemode, side (split violins), points/jitter/pointpos, selected/unselected, quartilemethod, hoveron, and zorder. Grouped and split violins work via the existing `ViolinMode` layout attribute. Includes unit tests, a doctest, a statistical-charts example (basic, horizontal, split), and a book recipe. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 tasks
Replace the placeholder box_plot.png thumbnail for the Violin Plots recipe with a generated 1024x680 violin image, and add the plotly#412 reference to the CHANGELOG entry. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
jqnatividad
added a commit
to dathere/plotly
that referenced
this pull request
Jul 3, 2026
Replace the placeholder box_plot.png thumbnail for the Violin Plots recipe with a generated 1024x680 violin image, and add the plotly#412 reference to the CHANGELOG entry. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Type the violin `span` field as `NumOrStringCollection` instead of `Vec<f64>`. Plotly.js types `span` as an `info_array` of `any`, so date/category axis values must be allowed for manual KDE spans on non-numeric value axes. Numeric spans continue to work unchanged; add a test covering both numeric and date-string spans. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
resolves #411
Adds the
Violintrace type, matching the full attribute surface of plotly.js'sviolintrace.Violin plots visualize the distribution of numerical data using a kernel density estimate, optionally with an inner box plot, mean line, and sample points.
What's included
Violin<X, Y>trace with all violin-specific attributes:bandwidth,box(inner mini box plot),meanline,span/spanmode,scalegroup/scalemode,side(split violins),points/jitter/pointpos,selected/unselected,quartilemethod,hoveron,zorder,x0/y0, plus the standard base-trace attributes.ViolinBox,MeanLine,Selection/SelectionMarker, and enumsViolinPoints,ScaleMode,SpanMode,ViolinSide,HoverOn(reusesbox_plot::QuartileMethod).PlotType::Violin, module + re-exports intraces/mod.rsandlib.rs. Grouped/split violins work via the existingViolinModelayout attribute.statistical_chartsgains basic, horizontal, and split violin examples.Violin Plotsrecipe under Statistical Charts.Attribute names were verified against plotly.js
src/traces/violin/attributes.js.Checklist
cargo test -p plotlypasses (12 violin unit tests + doctest)cargo clippy --features all -- -D warnings -A deprecatedcleancargo +nightly fmt --allCHANGELOG.mdupdated🤖 Generated with Claude Code