Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit1264314

Browse files
committed
add extra axis padding when bars have outside text labels
1 parent5cb0bcd commit1264314

File tree

1 file changed

+35
-2
lines changed

1 file changed

+35
-2
lines changed

‎src/traces/bar/cross_trace_calc.js‎

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ var Axes = require('../../plots/cartesian/axes');
99
vargetAxisGroup=require('../../plots/cartesian/constraints').getAxisGroup;
1010
varSieve=require('./sieve.js');
1111

12+
varTEXTPAD=require('./constants').TEXTPAD;
13+
1214
/*
1315
* Bar chart stacking/grouping positioning and autoscaling calculations
1416
* for each direction separately calculate the ranges and positions
@@ -565,9 +567,11 @@ function setBaseAndTop(sa, sieve) {
565567
}
566568
}
567569

570+
consttextPadding=estimateExtraPaddingForText(fullTrace);
568571
fullTrace._extremes[sa._id]=Axes.findExtremes(sa,pts,{
569572
tozero:tozero,
570-
padded:true
573+
padded:true,
574+
ppad:textPadding
571575
});
572576
}
573577
}
@@ -637,13 +641,16 @@ function stackBars(sa, sieve, opts) {
637641
}
638642
}
639643

644+
consttextPadding=estimateExtraPaddingForText(fullTrace);
645+
640646
// if barnorm is set, let normalizeBars update the axis range
641647
if(!opts.norm){
642648
fullTrace._extremes[sa._id]=Axes.findExtremes(sa,pts,{
643649
// N.B. we don't stack base with 'base',
644650
// so set tozero:true always!
645651
tozero:true,
646-
padded:true
652+
padded:true,
653+
ppad:textPadding
647654
});
648655
}
649656
}
@@ -754,6 +761,32 @@ function normalizeBars(sa, sieve, opts) {
754761
}
755762
}
756763

764+
// Returns a very lightweight estimate of extra padding (in pixels)
765+
// needed to accommodate outside text labels on bars. Only considers
766+
// vertical bars with textposition 'outside' and cliponaxis 'false'
767+
// for now.
768+
//
769+
// This mitigates the most common scenario where a simple vertical
770+
// bar chart with textposition set to 'outside' experiences text
771+
// labels being cut off at the edge of the plot area.
772+
//
773+
// More complex scenarios (horizontal bars, multi-line text labels)
774+
// are not (yet) handled here, but could be in the future.
775+
functionestimateExtraPaddingForText(trace){
776+
if(
777+
trace.orientation==='v'&&
778+
(trace.text||trace.texttemplate)&&
779+
trace.textposition=='outside'&&
780+
!trace.cliponaxis
781+
){
782+
// could count <br> elements here
783+
// but before that, need to make sure we are only
784+
// adding padding on the side(s) where it is needed
785+
returntrace.outsidetextfont.size+TEXTPAD;
786+
}
787+
return0;
788+
}
789+
757790
// Add an `_sMin` and `_sMax` value for each bar representing the min and max size value
758791
// across all bars sharing the same position as that bar. These values are used for rounded
759792
// bar corners, to carry rounding down to lower bars in the stack as needed.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp