2024-09-28 03:14:10 发布
网友
是否有显示图像高值范围差异的颜色图?如果没有(因为我没有找到cm),是否有方法由msyself定义并将其作为参数cmap提供给seaborn/matplotlib plots?我已经尝试过对数颜色缩放,但很难定义只有最高的10%的图像应该清楚地有一个很好的色差,其余的可以是黑色的例子。 所以我有一个图像/数组,它的数字在0到2000之间。我只知道1800和2000之间的数字有什么明显的区别。 有办法吗?你知道吗
这并不完全是你想要的,但是你可以试着把这两组分别画出来,我的意思是:
vals = np.array([1,2,3,101,120,150]) xs = np.arange(6) ys = np.arange(6) mask = vals>100 vals2 = vals[mask] xs1 = xs[mask] xs2 = xs[np.logical_not(mask)] ys1 = ys[mask] ys2 = ys[np.logical_not(mask)] plt.scatter(xs2,ys2,c='black') plt.scatter(xs1,ys1,c=vals2) plt.show()
当然,您可以调整第二个绘图的颜色图,以便将“有趣的”点与其他点区分开来
使用imshow的vmin和vmax参数可以将颜色范围限制为1800到2000。如果您想将较低的值映射到黑色,可以使用cmap.set_under(black)。你知道吗
imshow
vmin
vmax
cmap.set_under(black)
import numpy as np import matplotlib.pyplot as plt t = np.linspace(-7,7,301) x,y = np.meshgrid(t,t) z1 = np.sin(x)*np.cos(6*y) + np.cos(12*x*y)/6 z2 = np.exp(-((x-2)**2+(y-2)**2)*3) z = (z1*6/7+1)*100+1800-z2*1949 cmap=plt.get_cmap("viridis") cmap.set_under("black") fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(9,3.0)) im1 = ax1.imshow(z, cmap=cmap) fig.colorbar(im1, ax=ax1) im2 = ax2.imshow(z, vmin=1800, vmax=2000, cmap=cmap) fig.colorbar(im2, ax=ax2) ax1.set_title("Original") ax2.set_title("Linear between 1800 and 2000") plt.show()
这并不完全是你想要的,但是你可以试着把这两组分别画出来,我的意思是:
当然,您可以调整第二个绘图的颜色图,以便将“有趣的”点与其他点区分开来
使用
imshow
的vmin
和vmax
参数可以将颜色范围限制为1800到2000。如果您想将较低的值映射到黑色,可以使用cmap.set_under(black)
。你知道吗相关问题 更多 >
编程相关推荐