【问题标题】:Retrieve XY data from seaborn heatmap figure从 seaborn 热图中检索 XY 数据
【发布时间】:2022-06-22 20:19:30
【问题描述】:

我已经搜索了论坛,但可以找到任何东西。

我的代码如下:

def my_function(df):
    plt.figure()
    heatmap=sns.heatmap(df,cmap='coolwarm',)
    plt.title('title')
    plt.show()
    return heatmap

我想从热图中检索数据。我已经看到如何使用 matplotlib,但我无法弄清楚如何使用 sns/seaborn 热图

编辑:热图变量类型是

Edit2:我知道我可以在数据框中检索数据,但我想对我的函数进行单元测试,这就是为什么我尝试在 seaborn 热图中检索数据

【问题讨论】:

  • 请注意,在plt.show() 之后图像被删除,所以return heatmap(实际上是ax(一个子图),所以你可以将它命名为ax_heatmap 左右)没道理。如果你只想要数据,你应该return dfreturn df.to_numpy()
  • 我知道,但我实际上是在尝试使用 pytest 对函数进行单元测试。所以我想确保热图有我放入的数据
  • 您可以查看 seaborn 如何进行单元测试:github.com/mwaskom/seaborn/blob/master/seaborn/tests/…
  • 谢谢...他们使用 p = mat._HeatMapper(self.df_norm, **self.default_kws) npt.assert_array_equal(p.plot_data, self.x_norm) 但我不知道 HeatMapper 是什么.我在我的 seaborn 对象中找不到 plot_data
  • 可能是ax = sns.heatmap(....),然后是ax.collections[0].get_array()?正如 seaborn 的测试代码所示,热图中的信息量很大,不清楚您到底想测试什么。

标签: python seaborn heatmap


【解决方案1】:

你到底想要什么?您正在显示的 XY 数据已经在您的 DataFrame 中可用。当您阅读the documentation 时,您可以看到 plot_data 变量就是您输入的 DataFrame 的值。

如果您要求获取给定值的调色板,请查看https://stackoverflow.com/a/42126859/18482459

sns.heatmap 只返回轴,它允许您像这样操作热图:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

def my_function(df):
    plt.figure()
    heatmap=sns.heatmap(df,cmap='coolwarm',)
    plt.title('title')
    return heatmap

df = pd.DataFrame(np.random.rand(100).reshape(10,10))
heatmap = my_function(df)
heatmap.set_title("my_function call with df")
plt.show()

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2013-12-06
  • 1970-01-01
  • 2018-10-05
  • 2019-08-12
  • 2021-11-16
  • 2021-10-21
  • 2020-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多