@@ -615,8 +615,8 @@ function computeLegendDimensions(gd, groups, traces) {
615615 maxWidth += 40 ;
616616
617617 var groupXOffsets = [ opts . _width ] ;
618- var rowHeights = [ ] ;
619- var rowNum = 1 ;
618+ var groupYOffsets = [ ] ;
619+ var rowNum = 0 ;
620620 for ( var i = 0 , n = groupData . length ; i < n ; i ++ ) {
621621
622622 if ( fullLayout . _size . w < ( borderwidth + opts . _width + traceGap + maxWidth ) ) {
@@ -627,20 +627,15 @@ function computeLegendDimensions(gd, groups, traces) {
627627 opts . _width += maxWidth + borderwidth ;
628628 }
629629
630- var currRowHeight = ( ( rowNum - 1 ) * maxHeight ) ;
630+ var rowYOffset = ( rowNum * maxHeight ) ;
631+ rowYOffset += rowNum > 0 ? opts . tracegroupgap : 0 ;
631632
632- var length = groupData [ i ] . length ;
633- var y = ( ( 1 - ( length / maxItems ) ) * maxHeight ) ;
634- currRowHeight = currRowHeight > ( rowNum - 1 * maxHeight ) ? ( rowNum - 1 ) * maxHeight : y ;
635-
636- currRowHeight += rowNum > 1 ? opts . tracegroupgap : 0 ;
637-
638- rowHeights . push ( currRowHeight ) ;
633+ groupYOffsets . push ( rowYOffset ) ;
639634 groupXOffsets . push ( opts . _width ) ;
640635 }
641636
642637 groups . each ( function ( d , i ) {
643- Drawing . setTranslate ( this , groupXOffsets [ i ] , rowHeights [ i ] ) ;
638+ Drawing . setTranslate ( this , groupXOffsets [ i ] , groupYOffsets [ i ] ) ;
644639 } ) ;
645640
646641 groups . each ( function ( ) {
@@ -660,7 +655,8 @@ function computeLegendDimensions(gd, groups, traces) {
660655 } ) ;
661656 } ) ;
662657
663- opts . _height = 10 + ( borderwidth * 2 ) + ( rowNum * maxHeight ) + ( ( rowNum - 1 ) * traceGap ) ;
658+ var maxYLegend = groupYOffsets [ groupYOffsets . length - 1 ] + maxHeight ;
659+ opts . _height = 10 + ( borderwidth * 2 ) + maxYLegend ;
664660
665661 var maxOffset = Math . max . apply ( null , groupXOffsets ) ;
666662 opts . _width = maxOffset + maxWidth + 40 ;
0 commit comments