在 pyplot 中绘制色标

Plot color scale in pyplot

如何在 pyplot 中重现这个色标?

是8位灰度。

我不会复制完全相同的图像,但可以通过以下方式实现类似的图像:

import numpy as np
import matplotlib as plt
from pylab import imshow,pcolormesh,show
# ---------------------
nx = 500;ny = 200
ncolors = 8;
dny = int(ny/8);
# ---------------------
A= np.zeros((ny,nx));
for icol in range(ncolors):
    A[(icol-1)*dny:icol*dny,100:400]= (ncolors-icol)*dny
# ----------------------
imshow(A,cmap='Greys');show();

您可以自行调整实际值和位置。

使用 numpy,您可以创建一个由连续值组成的 8x1 矩阵。 plt.imshow() 允许将该图像放在所需的矩形区域内。使用 aspect='auto' 来防止 imshow 强制使用正方形像素,使用 cmap='Greys' 来获取灰度值的颜色图,并使用 interpolation='nearest' 以便每个 'pixel' 获得一个平面颜色(interpolation='bilinear' 会平滑颜色)。

import numpy as np
from matplotlib import pyplot as plt

img = np.linspace(0, 1, 8).reshape((-1, 1))
plt.imshow(img, extent=[110, 370, 5, 240], aspect='auto', cmap='Greys', interpolation='nearest')
plt.xlim(0, 520)
plt.ylim(220, 0)

plt.show()

这是我看到的另一个解决方案:

import numpy as np
from matplotlib import pyplot as plt


im1 = np.ones((64,512))
im2 = 2*im1
im3 = 3*im1
im4 = 4*im1
im5 = 5*im1
im6 = 6*im1
im7 = 7*im1
im8 = 8*im1

complete_array = np.concatenate((im1,im2,im3,im4,im5,im6,im7,im8),axis=0)
plt.imshow(complete_array,cmap="gray")
plt.show()