如何使用Matplotlib的“imshow”在行方向上的heamap中缩放值?

时间:2015-12-18 17:26:20

标签: python matplotlib scaling heatmap

是否有任何类似R的功能(热图(x,scale =“row”,..)来缩放Matplotlib中行方向的值?

- 当前代码---

im = ax_heatmap.imshow(z, aspect='auto', cmap=cmap, interpolation='nearest')

有一篇文章提到使用 vmin和vmax 参数进行缩放,但没有讨论如何在特定方向(行或列)进行缩放。

1 个答案:

答案 0 :(得分:1)

你必须做好自我规范化。如果绘图库为您完成,那么在所有情况下都可以正确使用颜色条。

import numpy as np
import matplotlib.pyplot as plt


shifts = np.linspace(1, 50, 25)[:, np.newaxis]
x = np.arange(50)[np.newaxis, :]
data = np.exp(-(x - shifts)**2 / 50) * shifts

fig, (ax1, ax2) = plt.subplots(2, 1)

im1 = ax1.imshow(data, interpolation='none', cmap='viridis')
fig.colorbar(im1, ax=ax1, label='raw values')

norm_data = (data - np.min(data, axis=1)[:, np.newaxis]) / np.ptp(data, axis=1)[:, np.newaxis]
im2 = ax2.imshow(norm_data, interpolation='none', cmap='viridis')
fig.colorbar(im2, ax=ax2, label='normalized by row')

enter image description here