@@ -147,8 +147,14 @@ def _get_unsampled_image(self, A, image_extents, viewlim):
147147 dyintv = ymax - ymin
148148
149149 # the viewport scale factor
150- sx = dxintv / viewlim .width
151- sy = dyintv / viewlim .height
150+ if viewlim .width == 0.0 and dxintv == 0.0 :
151+ sx = 1.0
152+ else :
153+ sx = dxintv / viewlim .width
154+ if viewlim .height == 0.0 and dyintv == 0.0 :
155+ sy = 1.0
156+ else :
157+ sy = dyintv / viewlim .height
152158 numrows , numcols = A .shape [:2 ]
153159 if sx > 2 :
154160 x0 = (viewlim .x0 - xmin )/ dxintv * numcols
@@ -576,8 +582,16 @@ def make_image(self, magnification=1.0):
576582 im .set_resample (self ._resample )
577583
578584 # the viewport translation
579- tx = (xmin - transformed_viewLim .x0 )/ dxintv * numcols
580- ty = (ymin - transformed_viewLim .y0 )/ dyintv * numrows
585+ if dxintv == 0.0 :
586+ tx = 0.0
587+ else :
588+ tx = (xmin - transformed_viewLim .x0 )/ dxintv * numcols
589+ if dyintv == 0.0 :
590+ ty = 0.0
591+ else :
592+ ty = (ymin - transformed_viewLim .y0 )/ dyintv * numrows
593+
594+ im .apply_translation (tx , ty )
581595
582596 l , b , r , t = self .axes .bbox .extents
583597 widthDisplay = (round (r * magnification ) + 0.5 ) - (round (l * magnification ) - 0.5 )
@@ -586,7 +600,7 @@ def make_image(self, magnification=1.0):
586600
587601 # resize viewport to display
588602 rx = widthDisplay / numcols
589- ry = heightDisplay / numrows
603+ ry = heightDisplay / numrows
590604 im .apply_scaling (rx * sx , ry * sy )
591605 im .resize (int (widthDisplay + 0.5 ), int (heightDisplay + 0.5 ),
592606 norm = self ._filternorm , radius = self ._filterrad )
0 commit comments