在 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()
如何在 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()