【问题标题】:How to scale values in the heamap in row direction using Matplotlib's "imshow"?如何使用 Matplotlib“imshow”在行方向上缩放热图中的值?
【发布时间】:2015-12-18 17:26:19
【问题描述】:

是否有类似 R 的功能(heatmap(x, scale="row",..) 可以在 Matplotlib 中按行方向缩放值?

-- 当前代码 ---

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

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

【问题讨论】:

  • 图像中的所有像素都有一个单一的颜色图和标准。我不明白你的问题。
  • @tcaswell:很抱歉造成混淆。我已经生成了一个热图,为了突出显示逐行模式,我需要在绘制热图之前缩放行值。此功能存在于 R 包中(如“heatmap”包参数“scale”),我想知道 matplotlib 中是否有类似的东西??

标签: python matplotlib scaling heatmap


【解决方案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')

【讨论】:

    猜你喜欢
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 2014-03-09
    • 2013-09-12
    • 1970-01-01
    • 2012-08-07
    相关资源
    最近更新 更多