【问题标题】:Show "Heat Map" image with alpha values - Matplotlib / Python显示带有 alpha 值的“热图”图像 - Matplotlib / Python
【发布时间】:2014-04-22 17:40:47
【问题描述】:

我正在尝试绘制一些数据来分析它们。

我的数据定义如下:

class Data(object):
    def __init__(self, rows=200, cols=300):
        """
        The Data constructor
        """
        # The data grid
        self.cols = cols
        self.rows = rows
        # The 2D data structure
        self.data = numpy.zeros((rows, cols), float)

一开始我有这个方法:

  def generate_data_heat_map(data, x_axis_label, y_axis_label, plot_title, file_path):
    plt.figure()
    plt.title(plot_title)
    fig = plt.imshow(data.data, extent=[0, data.cols, data.rows, 0])
    plt.xlabel(x_axis_label)
    plt.ylabel(y_axis_label)
    plt.colorbar(fig)
    plt.savefig(file_path + '.png')
    plt.close()

这给了我一个热图图像(第二个图),因为我传递给它一个 MxN [亮度(灰度,仅浮点数组)]。而且不知道为什么这不会生成灰度图像,但到目前为止我并不担心它,因为这就是我想要的结果。

经过更多的计算,我有了这个方法来可视化我的数据,使用 data_property 作为 RGB,data_uncertaity 作为 alpha:

def generate_data_uncertainty_heat_map(data_property, data_uncertainty, x_axis_label, y_axis_label, plot_title, file_path):
    plt.figure()
    uncertainty = numpy.zeros((data_property.rows, data_property.cols, 4))
    uncertainty[..., :3] = data_property.data[..., numpy.newaxis]
    uncertainty[..., 3] = data_uncertainty.data
    plt.title(plot_title)
    fig = plt.imshow(uncertainty.data, extent=[0, data_property.cols, data_property.rows, 0])
    plt.xlabel(x_axis_label)
    plt.ylabel(y_axis_label)
    plt.colorbar(fig)
    plt.savefig(file_path + '.png')
    plt.close()

但是,当然,这给了我一个带有 alpha 值的灰度图像,因为我对 R、G 和 B 重复相同的值。但我真正想要的是第一个方法结果(彩色)与一些作为数据的不确定性计算的 alpha 值。

我注意到我的颜色条也没有关于我的数据(它是 RGB 格式,我不能用它来分析我的数据)

我不知道如何实现我想要的结果,即有一个“热图”图,其中合并了我的 uncertainty_data 定义的 alpha 值和一个代表这个的颜色条不确定。就像合并上面这两张图片:

这是我的颜色:

这是我的 Alpha:

通过@BlazBratanic 提供的转换,我想我可以看到一点颜色(不确定),但这与我的预期相差甚远。

我所有的值都在 0.0 和 1.0 之间。

提前谢谢你。

【问题讨论】:

  • 你现在有什么事情吗,@ubuntu?

标签: python matplotlib rgba colorbar imshow


【解决方案1】:

使用Matplotlib cm module 将您的灰度映射到颜色值。如果我没记错的话,“jet”是默认的颜色图。所以你会做这样的事情:

uncertainty = plt.cm.jet(data_property.data)
uncertainty[..., 3] = data_uncertainty.data

【讨论】:

  • 只有我的测试数据。 (:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-14
  • 2020-07-11
  • 2019-07-20
  • 2017-07-27
  • 2021-09-27
  • 1970-01-01
  • 2014-05-06
相关资源
最近更新 更多