Skip to content

Commit 434d703

Browse files
Merge branch 'plotly:master' into first_poc_tickmode_sync
2 parents ea84512 + 9014a11 commit 434d703

40 files changed

+934
-97
lines changed

draftlogs/6351_add.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
- Add `marker.cornerradius` attribute to `treemap` trace [[#6351](https://github.com/plotly/plotly.js/pull/6351)]

draftlogs/6381_add.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
- Introduce group attributes for `scatter` trace i.e. `alignmentgroup`, `offsetgroup`, `scattermode` and `scattergap` [[#6381](https://github.com/plotly/plotly.js/pull/6381)],
2+
this feature was anonymously sponsored: thank you to our sponsor!

draftlogs/6414_fix.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
- Fix auto `backoff` when marker symbols and sizes are arrays [[#6414](https://github.com/plotly/plotly.js/pull/6414)]

src/components/drawing/index.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1203,7 +1203,13 @@ function applyBackoff(pt, start) {
12031203
if(trace.type === 'scatter') endI--; // Why we need this hack?
12041204

12051205
var endMarker = end.marker;
1206-
b = endMarker ? drawing.symbolBackOffs[drawing.symbolNumber(endMarker.symbol)] * endMarker.size : 0;
1206+
var endMarkerSymbol = endMarker.symbol;
1207+
if(Lib.isArrayOrTypedArray(endMarkerSymbol)) endMarkerSymbol = endMarkerSymbol[endI];
1208+
1209+
var endMarkerSize = endMarker.size;
1210+
if(Lib.isArrayOrTypedArray(endMarkerSize)) endMarkerSize = endMarkerSize[endI];
1211+
1212+
b = endMarker ? drawing.symbolBackOffs[drawing.symbolNumber(endMarkerSymbol)] * endMarkerSize : 0;
12071213
b += drawing.getMarkerStandoff(d[endI], trace) || 0;
12081214
}
12091215

src/plots/plots.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ var BADNUM = require('../constants/numerical').BADNUM;
1414

1515
var axisIDs = require('./cartesian/axis_ids');
1616
var clearOutline = require('../components/shapes/handle_outline').clearOutline;
17+
var scatterAttrs = require('../traces/scatter/layout_attributes');
1718

1819
var animationAttrs = require('./animation_attributes');
1920
var frameAttrs = require('./frame_attributes');
@@ -1566,6 +1567,8 @@ plots.supplyLayoutGlobalDefaults = function(layoutIn, layoutOut, formatObj) {
15661567
'fx',
15671568
'supplyLayoutGlobalDefaults'
15681569
)(layoutIn, layoutOut, coerce);
1570+
1571+
Lib.coerce(layoutIn, layoutOut, scatterAttrs, 'scattermode');
15691572
};
15701573

15711574
function getComputedSize(attr) {

src/traces/bar/attributes.js

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -196,27 +196,8 @@ module.exports = {
196196

197197
marker: marker,
198198

199-
offsetgroup: {
200-
valType: 'string',
201-
dflt: '',
202-
editType: 'calc',
203-
description: [
204-
'Set several traces linked to the same position axis',
205-
'or matching axes to the same',
206-
'offsetgroup where bars of the same position coordinate will line up.'
207-
].join(' ')
208-
},
209-
alignmentgroup: {
210-
valType: 'string',
211-
dflt: '',
212-
editType: 'calc',
213-
description: [
214-
'Set several traces linked to the same position axis',
215-
'or matching axes to the same',
216-
'alignmentgroup. This controls whether bars compute their positional',
217-
'range dependently or independently.'
218-
].join(' ')
219-
},
199+
offsetgroup: scatterAttrs.offsetgroup,
200+
alignmentgroup: scatterAttrs.alignmentgroup,
220201

221202
selected: {
222203
marker: {

src/traces/bar/cross_trace_calc.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,14 @@ function setBarCenterAndWidth(pa, sieve) {
441441

442442
// store the actual bar width and position, for use by hover
443443
var width = calcBar.w = barwidthIsArray ? barwidth[j] : barwidth;
444-
calcBar[pLetter] = calcBar.p + (poffsetIsArray ? poffset[j] : poffset) + width / 2;
444+
445+
if(calcBar.p === undefined) {
446+
calcBar.p = calcBar[pLetter];
447+
calcBar['orig_' + pLetter] = calcBar[pLetter];
448+
}
449+
450+
var delta = (poffsetIsArray ? poffset[j] : poffset) + width / 2;
451+
calcBar[pLetter] = calcBar.p + delta;
445452
}
446453
}
447454
}
@@ -498,13 +505,17 @@ function setBaseAndTop(sa, sieve) {
498505
for(var i = 0; i < calcTraces.length; i++) {
499506
var calcTrace = calcTraces[i];
500507
var fullTrace = calcTrace[0].trace;
508+
var isScatter = fullTrace.type === 'scatter';
509+
var isVertical = fullTrace.orientation === 'v';
501510
var pts = [];
502511
var tozero = false;
503512

504513
for(var j = 0; j < calcTrace.length; j++) {
505514
var bar = calcTrace[j];
506-
var base = bar.b;
507-
var top = base + bar.s;
515+
var base = isScatter ? 0 : bar.b;
516+
var top = isScatter ? (
517+
isVertical ? bar.y : bar.x
518+
) : base + bar.s;
508519

509520
bar[sLetter] = top;
510521
pts.push(top);

src/traces/bar/defaults.js

Lines changed: 1 addition & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ var Registry = require('../../registry');
77
var handleXYDefaults = require('../scatter/xy_defaults');
88
var handlePeriodDefaults = require('../scatter/period_defaults');
99
var handleStyleDefaults = require('./style_defaults');
10-
var getAxisGroup = require('../../plots/cartesian/constraints').getAxisGroup;
10+
var handleGroupingDefaults = require('../scatter/grouping_defaults');
1111
var attributes = require('./attributes');
1212

1313
var coerceFont = Lib.coerceFont;
@@ -58,45 +58,6 @@ function supplyDefaults(traceIn, traceOut, defaultColor, layout) {
5858
Lib.coerceSelectionMarkerOpacity(traceOut, coerce);
5959
}
6060

61-
function handleGroupingDefaults(traceIn, traceOut, fullLayout, coerce) {
62-
var orientation = traceOut.orientation;
63-
// N.B. grouping is done across all trace types that support it
64-
var posAxId = traceOut[{v: 'x', h: 'y'}[orientation] + 'axis'];
65-
var groupId = getAxisGroup(fullLayout, posAxId) + orientation;
66-
67-
var alignmentOpts = fullLayout._alignmentOpts || {};
68-
var alignmentgroup = coerce('alignmentgroup');
69-
70-
var alignmentGroups = alignmentOpts[groupId];
71-
if(!alignmentGroups) alignmentGroups = alignmentOpts[groupId] = {};
72-
73-
var alignmentGroupOpts = alignmentGroups[alignmentgroup];
74-
75-
if(alignmentGroupOpts) {
76-
alignmentGroupOpts.traces.push(traceOut);
77-
} else {
78-
alignmentGroupOpts = alignmentGroups[alignmentgroup] = {
79-
traces: [traceOut],
80-
alignmentIndex: Object.keys(alignmentGroups).length,
81-
offsetGroups: {}
82-
};
83-
}
84-
85-
var offsetgroup = coerce('offsetgroup');
86-
var offsetGroups = alignmentGroupOpts.offsetGroups;
87-
var offsetGroupOpts = offsetGroups[offsetgroup];
88-
89-
if(offsetgroup) {
90-
if(!offsetGroupOpts) {
91-
offsetGroupOpts = offsetGroups[offsetgroup] = {
92-
offsetIndex: Object.keys(offsetGroups).length
93-
};
94-
}
95-
96-
traceOut._offsetIndex = offsetGroupOpts.offsetIndex;
97-
}
98-
}
99-
10061
function crossTraceDefaults(fullData, fullLayout) {
10162
var traceIn, traceOut;
10263

@@ -172,6 +133,5 @@ function handleText(traceIn, traceOut, layout, coerce, textposition, opts) {
172133
module.exports = {
173134
supplyDefaults: supplyDefaults,
174135
crossTraceDefaults: crossTraceDefaults,
175-
handleGroupingDefaults: handleGroupingDefaults,
176136
handleText: handleText
177137
};

src/traces/bar/sieve.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
module.exports = Sieve;
44

55
var distinctVals = require('../../lib').distinctVals;
6-
var BADNUM = require('../../constants/numerical').BADNUM;
76

87
/**
98
* Helper class to sieve data from traces into bins
@@ -27,12 +26,18 @@ function Sieve(traces, opts) {
2726
// for single-bin histograms - see histogram/calc
2827
var width1 = Infinity;
2928

29+
var axLetter = opts.posAxis._id.charAt(0);
30+
3031
var positions = [];
3132
for(var i = 0; i < traces.length; i++) {
3233
var trace = traces[i];
3334
for(var j = 0; j < trace.length; j++) {
3435
var bar = trace[j];
35-
if(bar.p !== BADNUM) positions.push(bar.p);
36+
var pos = bar.p;
37+
if(pos === undefined) {
38+
pos = bar[axLetter];
39+
}
40+
if(pos !== undefined) positions.push(pos);
3641
}
3742
if(trace[0] && trace[0].width1) {
3843
width1 = Math.min(trace[0].width1, width1);

src/traces/box/defaults.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ var Lib = require('../../lib');
44
var Registry = require('../../registry');
55
var Color = require('../../components/color');
66
var handlePeriodDefaults = require('../scatter/period_defaults');
7-
var handleGroupingDefaults = require('../bar/defaults').handleGroupingDefaults;
7+
var handleGroupingDefaults = require('../scatter/grouping_defaults');
88
var autoType = require('../../plots/cartesian/axis_autotype');
99
var attributes = require('./attributes');
1010

0 commit comments

Comments
 (0)