[英]2D Heatmap using python for already binned data
我想為已經分箱的數據集獲取 2D 熱圖(使用 python),這樣我有 x 和 y 的左右邊緣,然后是我感興趣的數據(我想要顏色映射)作為 x 的 function和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 |
我想 plot 如下所示的 2D 熱圖: 2D 熱圖
這怎么可能讓我得到一個熱量 map, 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, 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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.