[英]Dynamic renormalize in matplotlib after set_data
我正在通过.imshow()方法以2d形式交互式显示3d数据。 我让用户在查看单个2d图层和查看所有2d图层的总和之间更改模式。 这会导致显示值范围的较大变化。 因此,始终保持相同的颜色映射会导致图像变得过饱和并且无法读取。 我使用AxesImage类的.set_data()方法来更改显示的数据,并且需要一种同时重新计算颜色映射的方法。 我最接近此目标的是此函数:
def blit_data(self, data):
c_norm = cs.Normalize(vmin=np.nanmin(data), vmax=np.nanmax(data))
cmap = plt.get_cmap('viridis')
scalar_map = cmx.ScalarMappable(norm=c_norm, cmap=cmap)
cmapped = scalar_map.to_rgba(data)
self.display.set_data(cmapped)
(cmx = matplotlib.cm, cs = matplotlib.colors, plt = matplotlib.pyplot)
但是,这有一个不良的副作用:将鼠标悬停在显示的图像中的像素上现在会显示[rgb]元组作为工具提示,而不是原始的float64值,这会妨碍对此数据的探究。 因此,我正在寻找另一种方法来达到相同的效果。 后续问题将是如何将此重归一化传达给颜色栏,使其保持相关性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.