我试图绘制一个等值线图。问题是矩阵的大部分值为0,重要的值很少。这导致图形非常单调,几乎没有可见的数据。我试图使用LogNorm将其归一化()但这使我的图变白色,因为零值。我想增强颜色,以便我更多地突出显示接近零的值(我们讨论的是1 e-7数量级的值),同时可能会增加热图中的颜色区域。最终的图应该类似于瀑布图(蓝色背景和彩色线)。ExpectationReality
X , Y = np.meshgrid(frequencies, speeds)
Z = freq_speed_grid.to_numpy()
ax = plt.figure(figsize=(10, 5))
levels=np.linspace(Z.min(), Z.max(), 50)
plt.contourf(X, Y, Z, cmap = "jet", norm=Normalize(), levels=levels)
plt.colorbar()
plt.xlabel("Frequency (Hz)")
plt.ylabel("Speed (RPM)")
plt.show()
1条答案
按热度按时间5gfr0r5j1#
让我们导入一些常用的东西,并组成一个
Z
数组,该数组最接近零,但其中包含一些LARGE值-Z
从10-3到105现在像你那样画出来
接下来,自制的数据重新缩放,我绘制
log10
,必须注意重新缩放标签它很好,但是很麻烦。幸运的是Matplotlib有我们需要的东西,它是
matplotlib.colors.LogNorm
,并且它做到了它所承诺的遗憾的是,它不能正确格式化颜色条上的标签,但这很容易修复