2D 热图使用 python 处理已经分箱的数据

问题描述

我想为已经分箱的数据集获取 2D 热图(使用 python),这样我就有 x 和 y 的左右边缘,然后是我感兴趣的数据(我想要颜色映射)作为x 和 y 的函数

我在下面给出了我的数据集的示例:

x_min x_max y_min y_max 数据
1 2 0 0.1 10
2 3 0 0.1 13
3 4 0 0.1 12
4 5 0 0.1 20
1 2 0.1 0.2 9
2 3 0.1 0.2 17
3 4 0.1 0.2 22
4 5 0.1 0.2 30

我想绘制如下所示的 2D 热图: 2D Heatmap

这怎么可能,以便我得到一个热图,其中 Y 轴 从 0 到 0.2,X 轴 从 1 到 5,还有一个颜色条依赖于“数据”?

谢谢!

解决方法

plt.imshow() 可以如下使用:

import matplotlib.pyplot as plt
import pandas as pd
from io import StringIO

data_str = '''
x_min   x_max   y_min   y_max   Data
1   2   0   0.1 10
2   3   0   0.1 13
3   4   0   0.1 12
4   5   0   0.1 20
1   2   0.1 0.2 9
2   3   0.1 0.2 17
3   4   0.1 0.2 22
4   5   0.1 0.2 30'''
df = pd.read_csv(StringIO(data_str),delim_whitespace=True)

plt.imshow(df['Data'].to_numpy().reshape(2,4),origin='lower',extent=[1,5,0.2],aspect='auto',cmap='plasma')
plt.colorbar()
plt.xticks(range(1,6))
plt.yticks([0,0.1,0.2])
for row in df.itertuples(index=False):
    plt.text((row.x_min + row.x_max) / 2,(row.y_min + row.y_max) / 2,f"{row.Data:.0f}",color='navy' if row.Data > 22 else 'yellow',size=20,ha='center',va='center')
plt.show()

example heatmap

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...