如何解决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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。