From 6aa7adc5a42b01d7abe303dda89213ef3a50466f Mon Sep 17 00:00:00 2001 From: Nicolas Riesco Date: Mon, 14 Nov 2016 15:44:53 +0000 Subject: [PATCH 1/5] bar: fix normalised group bar plots * Fixed bug computing the normalisation of bar plots in group mode. * The bug was caused by calling `sieve.put` with bar sizes that didn't take into account the bar base. * Bar plots in stack and relative mode weren't affected by this bug, because traces that set a bar base are excluded from the stack/relative mode. --- src/traces/bar/set_positions.js | 6 +++--- test/jasmine/tests/bar_test.js | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/traces/bar/set_positions.js b/src/traces/bar/set_positions.js index fd5edd0487f..c34adab1b02 100644 --- a/src/traces/bar/set_positions.js +++ b/src/traces/bar/set_positions.js @@ -485,8 +485,8 @@ function stackBars(gd, sa, sieve) { if(!isNumeric(bar.s)) continue; // stack current bar and get previous sum - var barBase = sieve.put(bar.p, bar.s), - barTop = barBase + bar.s; + var barBase = sieve.put(bar.p, bar.b + bar.s), + barTop = barBase + bar.b + bar.s; // store the bar base and top in each calcdata item bar.b = barBase; @@ -524,7 +524,7 @@ function sieveBars(gd, sa, sieve) { for(var j = 0; j < trace.length; j++) { var bar = trace[j]; - if(isNumeric(bar.s)) sieve.put(bar.p, bar.s); + if(isNumeric(bar.s)) sieve.put(bar.p, bar.b + bar.s); } } } diff --git a/test/jasmine/tests/bar_test.js b/test/jasmine/tests/bar_test.js index d9d93fc48d9..0082dbb4f85 100644 --- a/test/jasmine/tests/bar_test.js +++ b/test/jasmine/tests/bar_test.js @@ -453,6 +453,27 @@ describe('Bar.setPositions', function() { assertPointField(cd, 'y', [[0.75, 0.50, 0.25], [0.25, 0.50, 0.75]]); }); + it('should honor barnorm (group+base case)', function() { + var gd = mockBarPlot([{ + base: [3, 2, 1], + y: [0, 0, 0] + }, { + y: [1, 2, 3] + }], { + bargap: 0, + barmode: 'group', + barnorm: 'fraction' + }); + + expect(gd._fullLayout.barnorm).toBe('fraction'); + + var cd = gd.calcdata; + assertPointField(cd, 'b', [[0.75, 0.50, 0.25], [0, 0, 0]]); + assertPointField(cd, 's', [[0, 0, 0], [0.25, 0.50, 0.75]]); + assertPointField(cd, 'x', [[-0.25, 0.75, 1.75], [0.25, 1.25, 2.25]]); + assertPointField(cd, 'y', [[0.75, 0.50, 0.25], [0.25, 0.50, 0.75]]); + }); + it('should honor barnorm (stack case)', function() { var gd = mockBarPlot([{ y: [3, 2, 1] From 864dd9ed6cb6614d520c44dff22fc8674be91320 Mon Sep 17 00:00:00 2001 From: Nicolas Riesco Date: Mon, 14 Nov 2016 17:16:56 +0000 Subject: [PATCH 2/5] bar: fix hover label * Fix hover xLabelVal and yLabelVal so that it takes into account the bar base. --- src/traces/bar/hover.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/traces/bar/hover.js b/src/traces/bar/hover.js index 696ec89a55b..f1fe8d8cc82 100644 --- a/src/traces/bar/hover.js +++ b/src/traces/bar/hover.js @@ -67,7 +67,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { if(trace.orientation === 'h') { pointData.x0 = pointData.x1 = xa.c2p(di.x, true); - pointData.xLabelVal = di.s; + pointData.xLabelVal = di.b + di.s; pointData.y0 = ya.c2p(barPos(di) - barDelta, true); pointData.y1 = ya.c2p(barPos(di) + barDelta, true); @@ -75,7 +75,7 @@ module.exports = function hoverPoints(pointData, xval, yval, hovermode) { } else { pointData.y0 = pointData.y1 = ya.c2p(di.y, true); - pointData.yLabelVal = di.s; + pointData.yLabelVal = di.b + di.s; pointData.x0 = xa.c2p(barPos(di) - barDelta, true); pointData.x1 = xa.c2p(barPos(di) + barDelta, true); From f5198b9d0763f2f4eef6433ed06f72e9334e152c Mon Sep 17 00:00:00 2001 From: Nicolas Riesco Date: Mon, 14 Nov 2016 17:18:44 +0000 Subject: [PATCH 3/5] test: update hover tests in bar_test * Updated hover tests in bar_test to test that hover labels honor bar bases. --- test/jasmine/tests/bar_test.js | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/test/jasmine/tests/bar_test.js b/test/jasmine/tests/bar_test.js index 0082dbb4f85..e99bef54661 100644 --- a/test/jasmine/tests/bar_test.js +++ b/test/jasmine/tests/bar_test.js @@ -774,17 +774,30 @@ describe('bar hover', function() { }); it('should return the correct hover point data (case y)', function() { - var out = _hover(gd, 185.645, 0.15, 'y'); + var out = _hover(gd, 0.75, 0.15, 'y'), + subplot = gd._fullLayout._plots.xy, + xa = subplot.xaxis, + ya = subplot.yaxis, + barDelta = 1 * 0.8 / 2; - expect(out.style).toEqual([0, '#1f77b4', 75, 0]); - assertPos(out.pos, [182.88, 182.88, 214.5, 170.5]); + expect(out.style).toEqual([0, '#1f77b4', 0.5, 0]); + assertPos(out.pos, + [xa.c2p(0.5, true), xa.c2p(0.5, true), + ya.c2p(0 - barDelta, true), ya.c2p(0 + barDelta, true)]); }); it('should return the correct hover point data (case closest)', function() { - var out = _hover(gd, 135.88, -0.15, 'closest'); - - expect(out.style).toEqual([0, '#1f77b4', 75, 0]); - assertPos(out.pos, [182.88, 182.88, 214.5, 192.5]); + var out = _hover(gd, 0.75, -0.15, 'closest'), + subplot = gd._fullLayout._plots.xy, + xa = subplot.xaxis, + ya = subplot.yaxis, + barDelta = 1 * 0.8 / 2 / 2, + barPos = 0 - 1 * 0.8 / 2 + barDelta; + + expect(out.style).toEqual([0, '#1f77b4', 0.5, 0]); + assertPos(out.pos, + [xa.c2p(0.5, true), xa.c2p(0.5, true), + ya.c2p(barPos - barDelta, true), ya.c2p(barPos + barDelta, true)]); }); }); From 74f3fa0106617eb2ce2c045ca46731e9b879a29b Mon Sep 17 00:00:00 2001 From: Nicolas Riesco Date: Mon, 14 Nov 2016 15:54:00 +0000 Subject: [PATCH 4/5] test: update mock bar_attrs_group_norm * Adapted from https://github.com/n-riesco/plotly.js/pull/4/commits/6a78175793461e1a168ac5b861b5678f495b8067 --- test/image/baselines/bar_attrs_group_norm.png | Bin 10324 -> 9554 bytes test/image/mocks/bar_attrs_group_norm.json | 10 +++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/image/baselines/bar_attrs_group_norm.png b/test/image/baselines/bar_attrs_group_norm.png index f209c383e666dc85563201dbdb11ec4768443deb..53a17a1353ab299bf63cfbf4d28a8e60a1eef7f8 100644 GIT binary patch literal 9554 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 literal 10324 zcmeHNXH-+$x(zX6C`Ut+E+G^}n)EJ-fHXw`X(Di>2q;BB=@6oH5Q2h8SBj_zC`eH$ z3P@D~SP*H3DuNKHfe?Hvh#ud#?~Qlfxc82C?|A1&#$asLUVE*zzi-a@&2PsXH`4u$ zk%tiif&8Ygr)>g((BWx6I6b%$R#@|XUCd-n|Xi;KUuN12gmhMMTaGt z&1IYmmJ3VOW5#jCqLK9eM#iua*hv+7+`i``tXjxO6e5}~+ms!rj5ANbAPvsPG$EpI z!D04clk7T3qnjxXh-lVRC>fajKIrC@ejAimeQ}-cU;EzG5|A4!vzc z1ziQ!8Sitv`x#*NE_|EA<#06z`dxV(af?SYO9~;jsTb~pdO_W}*tC#J z>g!J=Y?q9>i?Y3+GsupO+3I-ON%5i(TCd?v5Q11NIup&?{OBUiZJ^qCd8SWDcMta@ z^F-U;oa6{5P6PjK&8~%6qItTB9u-Qbk%&fI;xB8k=4`E984?enET_Cara6e#=L}gH z^c#ONU2@H;{7jo*6d%g8&?qI8y4H3RbNPZ_wH+gl>j3JH1-`z%eg35!p;cpLK!{(> z_vJx{*+^aw{A6~Jk?Ms{Na_0Zvinx$qLfw44t`<3!HcQkrH zRnEp@;e4msTq|zJo*VAH<<7^fD$b@1_zj25PZj30_tq^da4VcWvAjSS-V^vqaCPk3 zv9b9MX~ISTb!|!3p_w^N&9CIvLjpL~FqWS&(Ria$0v{%#KCQX*#+0`cy(gH2v3hdh z?vYGoVkn$aZBS%`$)uTKyO1Tb)umFbB!(-eelTD%E3Kwec{Dx}yHnPxE;zt<_#Lk^lK#>! z0g#-BZg46*Z*GjGP=>!r#c@hs-*u3Tq`asD={93xrpz0#*sVLBpf>wHiXmZ9G%N+f} z(FT!~Z)dCdwzEo!P(SHvp8cJxQ?a3-z%z6qqp$u7m&~CCE4}JL5Jq;&+g2L|Ht=oZ zEt(r%*EA%o%Cr?dha@a)E}B&iKDjtuR-Q~HxIA+5rq31Gi~40RAeh5B?>EMcrJnNE zKP*;5UsjK9Ac!8z&didm*;t!4v9Zajt?Mp4Ccv%ecH>mQc#7=#kI!b9QJJ@b!6s!- zH^3fKm-`F+=7##H?tNuCfs3CW9%CcQ_L9Gj%DIO7osKX(smp&cnVDbpP1k#8W0?K3 z=>L=zdj6bmC94LmQYBlDDh&!t*Dm&O!dQojFMgx0bkObKLsBU#grS(F!MRY21dZkQ zGg+oY8%r#uf4FQHeU_|KZ1A|aUDDek3&ZMUjwY6&5RN+TrA(jB)kAE=x<>1mMyGO8 zZU};~G54q{&*J!WkVn}c zgiw4}!Or%AxOS^FBSXr)Mw^|!33$MT=ew<&{9z`r{MHO4zI8iSvk+eNW5kL@>8Zyi zovPCkuETX9%XBV8wgZgE&_F> ztGbbK2732i?Bj6rEdGs=>aw!3w{?g+W}Jo9<)j@xPw9=458b+{$BQCtjOzd1U1by% z$4qX~&Gn(gL!e^wF7GSdt(P%Q#Jug1%-omIv17Y~%1Hqjo2R~4YU9l_1f+`S1?giR zMOYs_dbE;v78>9d-`c?xr|Un&m&7J59!inzW5vmvULZ@Pkuc5}B+&uV;QS_>P{E*N zyG{R_@g;Q6>>WNBD@EMB(eFxluXp2)1Cbr1;s7nAP7ibH&W5-tqEPCzW;s2Mok4o! z3|ttsjyjxr8Eqe0;9jlGbx=(_7(WurAub#9XyP{@l+TdU+ejSAQF{XSIU^+co{Lo|s_Hj~0@c7ljLZ)4huKoQ5(y6<82=pZ*#po%w{+z{CB#XNexUxfqK?NcXI%z_kgTLRKZvuWJU@un{kIac3k#M7f0v>J?thWwsL< zvzk%~*Y-LdsDp^+bfxmaa-AoWBzEAMHVpc^grswW_+Ck7;?O7I5)Bh@Vd&!Sc<|3h z5ZzhDarc_Y_Fo7)MihTNbhr5=b|mjeUA_Y>SDmBCB`ZKB&<1qj@lk(tA z#~}dqd}2|Ey^LsQpKq8g7vK*e zC0&Tp*wwfr8Hz`N779b3d?q<@+cdRS)XdCG#I8ZpGw{^LQgoI`j;Xb^cuGo&iLtTq zyw#p<4OSZ^IJSc0`~0_JND{L4DKF6g-&*Z8iqK=KelZ{qciiv+@fXhYt)Or~qZ->b z={8)a!Df%wv#x&o=8fZ19D2S_6e?C$1=JGyUQy9_$}&nL=aJx2&n=11ZmsXe&A6DNwI6pEae6HJjcm ztcKthrCJmKZ6lbW+U-9;JH;2VV#^AoW*EmN0`_O3Hz=C}kCs$%MFMa`WV|nY@y;e0MTV}#;E&GAY$ zcz$bhO9H=m-r*~UkUH}QPUT4aD#87Tlgh-!%nM`B=bv#D>Nz<~P5*)|t^1;`J8*JOKf9l_9M6Vt~9nyQM{QVOIcSw2K3V57|<| z#+MEQGjp5+IGlAX-yP0<7$HC*^Ra+ehJVh@0!r_I7r>G9+#)4|F2E@zHGpWkl(w*0 z#05C07Pc}l`%k=EnwC`_kc@aKV4lS*-7RlK*&5z`PN{95y7Qc#h0&E= zm@=`d4XhaO?RSR@?@eTbTvd*2EZbh|0EA7BRb0RiG^gMLX z?L>Q%EYr4d^SMEswY|H0@dy^5z=1#-V5iPeg zW;$4pHpekd>IL6suP+t7if#&L-|Txlk$x`UbGQyJoYq+VH3EiviS=;UX`cR$HON=8 z6>FYjHLpX{xN-=+Hse%B2-Foi&2~&((6e^Q+?SzfL(ywQn_Kn5oyECf0bKGJ-fd7# z2dSD3*KR2uFoEaCG+W%a6f80?zB*l6Uw68Q*cjDuL&hQBu09klyd!ZpELWTXDEJg> zMx1;%Im5F~to+QYtB-vq&scvMs#Ev zOLT(u;{uQ-UR!CR3esfrB*64rX~GZEWYpY4?5Fq761`I%+U+G?#SWE`PuNP69Xwmd z!o{;?(EST63xfpJl+kMg&D)ig=Aflgkei!3*4UhV(XGw-4J}9*BM!AW%iLUI003?J zUjy`J)g*`yt^#H$Rq%($_>bZ)R)2Nm zt%B8w+ua7NTfAiMv7Cdn1f8j`a_<+VMOVeS-ga7pf=%=Yel$T%YREq0#`;K{G*D2c zjuS7_yn(B%*{1q&XseY zWs(a=OHa(qd)LFYyWfEJ$lid7H0QC(eh*r!tQ{1$Wp>9~_x^&(AM5#RUisv!t_2dIrVE%1s=tTjX{5uO%3Qthfr8{80G>ug_N;eG;f~MpC0h;ko4|UnQZN?-&j(Pb9X#Tj^GVdF|)96uFw2TKsThBDr?=> z%wwd;`;$J-+;`|JbD9Tzu-5TZyX?W~wWaBDxfFm;hli`GhC{7YeP{L^Q~w%%VRj(k z$GT_53;JIv4NExZgj6!~DIezvVzvS8g~uuzCicANB;neagX(g-QvG*ou9GCFJ%-Y4 zLW$}qA|^YvpVlYfRq{v%?UasNQG3!g9Oj1W>x0R}C|OYB&&-=sztmA?uSwZFajXwF zt%+Dl;8D1TLH+{j5=!gq>E}w4S_H7C5;Ql+Gn`h{5gnG88yJbZ1EEVrc221~HL(mu z59`uD^wxz?ZkHLFSXiWHb$5R6Ol4D7QZ*tQ`htfN>K&1~mT;&sx}H1|=d`iD>P>pS z!+EOLHb^qam$#&Ga(o%|*3JMk_*=wMREHYTDu^7hb}eUJ_^G2Amh#0DD^4`g_wOq7 z@3%t|x!0{dYg23*?$sX!-LuG@{OLBTDxj@49xvDFLbk%U&5w5!0K;8>W+;^*|6yIj zwbbTi1$9Ba@!bi9$fULM#pXR)#HGp_e(c=?2@iL|a&PX*E{@{#NK_t)mf$aGjBD?~YXQk(Vd*j)*UGi?Mj@$=Xskw1dCSChO9I?1?C8hf(D-25NH`XEn zA?-?)acFjgGL!~n2F*V1BY=}m%Cag5rSGw{!vtRWa_&8W-2=NmDp0O46gXY{o973Y z85wrlj`seqsnAi&b7&;vJkdsWcw@PW*OrY;ox|qXtZ~cOhmQ>PM2E}aLB65H z2u=fXW~ot@s#6?OZ&CeHv8PjSiD}IjX*_8*hlC2CPV*3DZTyqeXH1n}zpn}KX_O<9 zL~-XQs(*ie$c zfg~Zbe(ASV_6CtBJNZ?si%Uf=FLUaBXW6u_>EVc_^#wx5;?(PL>dG)-=po0lObwHG zjrgZKc?s=Oo(0|%Sz6-agB?KXVjI*r8poTc<1FvqzH!*+*<$C`DKiO#C6(0RO})54 zno)eqd4spVmehF`58Y^=5|z z%-t^5jTwY2(8i1q ke?8!@Bl@?EqIH4it30s5@ufH5Ye9& Date: Mon, 14 Nov 2016 19:45:57 +0000 Subject: [PATCH 5/5] test: make linter happy --- test/jasmine/tests/bar_test.js | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/test/jasmine/tests/bar_test.js b/test/jasmine/tests/bar_test.js index e99bef54661..a67ee339cf7 100644 --- a/test/jasmine/tests/bar_test.js +++ b/test/jasmine/tests/bar_test.js @@ -778,12 +778,14 @@ describe('bar hover', function() { subplot = gd._fullLayout._plots.xy, xa = subplot.xaxis, ya = subplot.yaxis, - barDelta = 1 * 0.8 / 2; + barDelta = 1 * 0.8 / 2, + x0 = xa.c2p(0.5, true), + x1 = x0, + y0 = ya.c2p(0 - barDelta, true), + y1 = ya.c2p(0 + barDelta, true); expect(out.style).toEqual([0, '#1f77b4', 0.5, 0]); - assertPos(out.pos, - [xa.c2p(0.5, true), xa.c2p(0.5, true), - ya.c2p(0 - barDelta, true), ya.c2p(0 + barDelta, true)]); + assertPos(out.pos, [x0, x1, y0, y1]); }); it('should return the correct hover point data (case closest)', function() { @@ -792,12 +794,14 @@ describe('bar hover', function() { xa = subplot.xaxis, ya = subplot.yaxis, barDelta = 1 * 0.8 / 2 / 2, - barPos = 0 - 1 * 0.8 / 2 + barDelta; + barPos = 0 - 1 * 0.8 / 2 + barDelta, + x0 = xa.c2p(0.5, true), + x1 = x0, + y0 = ya.c2p(barPos - barDelta, true), + y1 = ya.c2p(barPos + barDelta, true); expect(out.style).toEqual([0, '#1f77b4', 0.5, 0]); - assertPos(out.pos, - [xa.c2p(0.5, true), xa.c2p(0.5, true), - ya.c2p(barPos - barDelta, true), ya.c2p(barPos + barDelta, true)]); + assertPos(out.pos, [x0, x1, y0, y1]); }); });