@@ -88,24 +88,28 @@ export default class DocumentScatterRenderer extends BaseRenderer {
8888
8989 const width = this . width
9090 const height = this . height - 20
91+ const range = [ width , height ]
9192
92- const scales = [ width , height ] . map ( ( m , i ) => ( m - 10 ) / ( y_max [ i ] - y_min [ i ] ) )
93+ const scales = range . map ( ( m , i ) => ( m - 10 ) / ( y_max [ i ] - y_min [ i ] ) )
9394 const scale_min = Math . min ( ...scales )
9495 const offsets = [ 5 , 20 ]
9596 for ( let i = 0 ; i < scales . length ; i ++ ) {
9697 if ( scales [ i ] > scale_min ) {
9798 if ( ! isFinite ( scales [ i ] ) ) {
98- offsets [ i ] = [ width , height ] [ i ] / 2 - y_min [ i ]
99+ offsets [ i ] = range [ i ] / 2 - y_min [ i ]
99100 } else {
100101 offsets [ i ] += ( ( scales [ i ] - scale_min ) * ( y_max [ i ] - y_min [ i ] ) ) / 2
101102 }
102103 }
103104 }
104105 for ( let i = 0 ; i < data . length ; i ++ ) {
105- const v = data [ i ] . map ( ( a , k ) => ( a - y_min [ k ] ) * scale_min + offsets [ k ] )
106+ const v = data [ i ] . map ( ( a , k ) => {
107+ const p = ( a - y_min [ k ] ) * scale_min + offsets [ k ]
108+ return isFinite ( p ) ? p : range [ k ] / 2
109+ } )
106110 const text = document . createElementNS ( 'http://www.w3.org/2000/svg' , 'text' )
107111 text . setAttribute ( 'x' , v [ 0 ] )
108- text . setAttribute ( 'y' , v [ 1 ] )
112+ text . setAttribute ( 'y' , v [ 1 ] ?? range [ 1 ] / 2 )
109113 text . innerHTML = words [ i ]
110114 const title = document . createElementNS ( 'http://www.w3.org/2000/svg' , 'title' )
111115 title . innerHTML = words [ i ]
0 commit comments