Skip to content

Commit a3bbc7b

Browse files
committed
Merge pull request #710 from leejjoon/fix-nonuniformimage
NonUniformImage : conversion to RGB array is now done inside *make_image* method.
2 parents ba2893e + f62384a commit a3bbc7b

File tree

1 file changed

+22
-18
lines changed

1 file changed

+22
-18
lines changed

lib/matplotlib/image.py

+22-18
Original file line numberDiff line numberDiff line change
@@ -681,13 +681,34 @@ def _check_unsampled_image(self, renderer):
681681
def make_image(self, magnification=1.0):
682682
if self._A is None:
683683
raise RuntimeError('You must first set the image array')
684+
685+
A = self._A
686+
if len(A.shape) == 2:
687+
if A.dtype != np.uint8:
688+
A = self.to_rgba(A, bytes=True)
689+
self.is_grayscale = self.cmap.is_gray()
690+
else:
691+
A = np.repeat(A[:,:,np.newaxis], 4, 2)
692+
A[:,:,3] = 255
693+
self.is_grayscale = True
694+
else:
695+
if A.dtype != np.uint8:
696+
A = (255*A).astype(np.uint8)
697+
if A.shape[2] == 3:
698+
B = zeros(tuple(list(A.shape[0:2]) + [4]), np.uint8)
699+
B[:,:,0:3] = A
700+
B[:,:,3] = 255
701+
A = B
702+
self.is_grayscale = False
703+
704+
684705
x0, y0, v_width, v_height = self.axes.viewLim.bounds
685706
l, b, r, t = self.axes.bbox.extents
686707
width = (round(r) + 0.5) - (round(l) - 0.5)
687708
height = (round(t) + 0.5) - (round(b) - 0.5)
688709
width *= magnification
689710
height *= magnification
690-
im = _image.pcolor(self._Ax, self._Ay, self._A,
711+
im = _image.pcolor(self._Ax, self._Ay, A,
691712
height, width,
692713
(x0, x0+v_width, y0, y0+v_height),
693714
self._interpd[self._interpolation])
@@ -721,23 +742,6 @@ def set_data(self, x, y, A):
721742
raise TypeError("3D arrays must have three (RGB) or four (RGBA) color components")
722743
if len(A.shape) == 3 and A.shape[2] == 1:
723744
A.shape = A.shape[0:2]
724-
if len(A.shape) == 2:
725-
if A.dtype != np.uint8:
726-
A = self.to_rgba(A, bytes=True)
727-
self.is_grayscale = self.cmap.is_gray()
728-
else:
729-
A = np.repeat(A[:,:,np.newaxis], 4, 2)
730-
A[:,:,3] = 255
731-
self.is_grayscale = True
732-
else:
733-
if A.dtype != np.uint8:
734-
A = (255*A).astype(np.uint8)
735-
if A.shape[2] == 3:
736-
B = zeros(tuple(list(A.shape[0:2]) + [4]), np.uint8)
737-
B[:,:,0:3] = A
738-
B[:,:,3] = 255
739-
A = B
740-
self.is_grayscale = False
741745
self._A = A
742746
self._Ax = x
743747
self._Ay = y

0 commit comments

Comments
 (0)