title: Matplotlib : What is the function of cmap in imshow?
body: <p>I'm trying to learn opencv using python and came across this code below: </p>
  
  <pre><code>import cv2
  import numpy as np
  from matplotlib import pyplot as plt
  
  BLUE = [255,0,0]
  
  img1 = cv2.imread('opencv_logo.png')
  replicate = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REPLICATE)
  reflect = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT)
  reflect101 = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT_101)
  wrap = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_WRAP)
  constant= cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_CONSTANT,value=BLUE)
  
  plt.subplot(231),plt.imshow(img1,'gray'),plt.title('ORIGINAL')
  plt.subplot(232),plt.imshow(replicate,'gray'),plt.title('REPLICATE')
  plt.subplot(233),plt.imshow(reflect,'gray'),plt.title('REFLECT')
  
  plt.subplot(234),plt.imshow(reflect101,'gray'),plt.title('REFLECT_101')
  plt.subplot(235),plt.imshow(wrap,'gray'),plt.title('WRAP')
  plt.subplot(236),plt.imshow(constant,'gray'),plt.title('CONSTANT')
  
  plt.show()
  </code></pre>
  
  <p>source : <a href="http://docs.opencv.org/master/doc/py_tutorials/py_core/py_basic_ops/py_basic_ops.html#exercises" rel="noreferrer">http://docs.opencv.org/master/doc/py_tutorials/py_core/py_basic_ops/py_basic_ops.html#exercises</a></p>
  
  <p>What does plt.imshow(img1, 'gray') do? I tried searching Google and all I could understand was that the 'gray' argument was a Color map. But my image (pic is there on the site. see link) is not displayed in grayscale. I tried removing the second argument. So the code was like plt.imshow(img1). It executes. The image remains same as before. Then what does the second argument 'gray' do? Can someone explain all this to me? Any help appreciated. Thanks.</p>
  
  <p>PS. I'm totally new to Matplotlib</p>