我有使用 imshow() 显示的 -70,0 范围内的数据,并且希望使用非线性颜色条来表示数据,因为我的模式都在 -70、-60 范围和 -70 范围内, 0 范围。
我想要使用任意函数(参见示例)重新缩放/重新规范化颜色条的最简单方法,以便所有模式都能很好地显示。
这是数据和函数的示例:
sample_data=(np.ones((20,20))*np.linspace(0,1,20)**3)*70-70
def renorm(value):
"""
Example of the way I would like to adjust the colorbar but it might as well be an arbitrary function
Returns a number between 0 and 1 that would correspond to the color wanted on the original colorbar
For the cmap 'inferno' 0 would be the dark purple, 0.5 the purplish orange and 1 the light yellow
"""
return np.log(value+70+1)/np.log(70+1)
这就是我设法做到的:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import PowerNorm
sample_data=(np.ones((20,20))*np.linspace(0,1,20)**3)*70-70
plt.figure()
im = plt.imshow(sample_data+70, norm=PowerNorm(gamma=0.5))
cbar = plt.colorbar(orientation='horizontal')
cbar.ax.set_xticklabels(np.arange(-70, 0, 8))
plt.show()
您可以更改gamma
。
但是,不推荐这种可视化,请参阅:http://matplotlib.org/users/colormapnorms.html http://matplotlib.org/users/colormapnorms.html在“幂律”->“注释”下
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)