Repository navigation
Fix *auto* text of zero-length bar traces - #8078
Open
william-xue wants to merge 4 commits into
Open
william-xue wants to merge 4 commits into
william-xue wants to merge 4 commits into
Conversation
A zero-length bar kept its text hidden when textposition was *auto*, while *outside* text was drawn. Only hide text for a bar with no position or for *inside* placement.
Baselines taken from the ubuntu-latest CI renders of run 39709994398 (per CONTRIBUTING: download from the test-baselines job). Only the mocks whose text placement changes with this fix: bar/funnel zero-length cases. map_* and scattermap_dynamic_defaults are left untouched - they differ only because Mapbox tokens are not available to PR runs.
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.
Fixes #6474.
What changes
src/traces/bar/plot.jsreturned early for every blank bar whentextpositionwas*auto*or*inside*, so a bar of zero length never drew itstext. The early return now covers*inside*placement and bars that have no position at all (null values). Text with*auto*placement falls through to the existing fit check, which finds no room inside a zero-length bar and places the text outside.*outside*text already drew for zero-length bars, so*auto*and*outside*now agree.Validation
plotly-4.1.1.min.jsfrom the CDN, loaded in headless Chrome. One page holds two figures; the.barlayer .bartextnodes come from the DOM afternewPlot.y: [0, 5, 10],textposition: 'auto',text: ['ZERO', 'FIVE', 'TEN']FIVE,TENZERO(bartext-outside,translate(96.66, 334)),FIVE,TENy: [null, 5, 10],textposition: 'auto',text: ['NULLPT', 'FIVE', 'TEN']FIVE,TENFIVE,TEN(unchanged)The right column comes from the same page with the change applied to the bundle copy.
Tests
test/jasmine/tests/bar_test.js: new case inside theA bar plotdescribe,should draw *auto* text of zero-length bars outside. It fails before the change, because noZEROnode exists, and it asserts that a null value keeps its text hidden.Baselines
Thirteen baselines move. They are the
baselines-default-diffartifact of thetest-baselinesjob from the CI run on07834db0(ubuntu-latest), so they carry the renderer the job uses rather than a local machine.Every one keeps its dimensions, and diffing each updated image against the previous baseline shows label-sized deltas only — 0.02% to 0.38% of the pixels, with the largest change in
blank-bar-outsidetext.png:bar_attrs_relative.png,round-bar_attrs_relative.png,bar_display_height_zero.png,bar_display_height_zero_no_line_width.png,bar_display_height_zero_only_line_width.png,rounded-bar_display_height_zero_no_line_width.png,bar_hide_nulls.png,bar-marker-line-colorscales.png,blank-bar-outsidetext.pngsrc/traces/funnel/plot.js→barPlot.plotand therefore use the same text placement:funnel-grouping-vs-defaults.png,funnel-offsetgroups.png,funnel_horizontal_stack_basic.png,funnel_nonnumeric_sizes.pngmap_*andscattermap_dynamic_defaultsare deliberately left alone: those mocks cannot render without a Mapbox token.I did not run the karma suites locally.
The draft log follows in a second commit, since its filename needs this PR number.