You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python从三个列表生成基于正负值的双色热力图?

问题描述

我有三个数据数组initial_R、initial_v和E_total,代码框架如下:

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

initial_R=[]
initial_v=[]
E_total=[]

另有代码可正常填充这三个数组,其中initial_R为x坐标,initial_v为y坐标,E_total为对应坐标点的强度值。我希望绘制一个热力图,根据E_total的正负用两种颜色区分每个方格。

尝试过以下代码但无效,也不清楚其运行原理:

df = pd.read_clipboard()
df.drop_duplicates(['initial_R','initial_v'], inplace=True)
pivot = df.pivot(index='initial_R', columns='initial_v', values='E_total')
ax = sns.heatmap(pivot,annot=True)
plt.show()

print (pivot)
解决方案

问题根源

你之前的代码核心问题是pd.read_clipboard():这个函数用于从系统剪贴板读取表格数据,但你的数据存在内存数组中,因此根本无法读取到目标数据,后续步骤自然无效。

正确实现步骤

要完成需求,需将内存数组转换为DataFrame,整理成热力图所需的二维结构,再自定义颜色映射区分正负值:

  1. 将数组转换为DataFrame,关联坐标与对应强度值
  2. 去除重复坐标点(避免重塑数据时出错)
  3. 将数据重塑为热力图需要的二维矩阵
  4. 自定义颜色映射,区分正负值
  5. 绘制热力图

完整代码

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

# 假设三个数组已被正确填充
initial_R = []
initial_v = []
E_total = []

# 1. 数组转DataFrame
df = pd.DataFrame({
    'initial_R': initial_R,
    'initial_v': initial_v,
    'E_total': E_total
})

# 2. 去重:保留每个(initial_R, initial_v)坐标对的唯一值
df.drop_duplicates(['initial_R', 'initial_v'], inplace=True, keep='last')

# 3. 重塑为热力图的二维结构:行=initial_R,列=initial_v,单元格值=E_total
pivot_df = df.pivot(index='initial_R', columns='initial_v', values='E_total')

# 4. 自定义颜色映射:负值用红色,正值用蓝色
cmap = ListedColormap(['red', 'blue'])

# 5. 绘制热力图
plt.figure(figsize=(10, 8))
# annot=True会显示每个方格的E_total数值,cbar=False隐藏颜色条(不需要可保留)
sns.heatmap(pivot_df, cmap=cmap, annot=False, cbar=False)
plt.xlabel('initial_v')
plt.ylabel('initial_R')
plt.title('E_total 正负热力图')
plt.show()

代码说明

  • pd.DataFrame(...):将三个数组关联成表格,让每个坐标对应唯一的强度值
  • drop_duplicates:如果存在重复的(x,y)坐标,只保留一个,避免pivot时出现索引冲突
  • pivot:将长格式表格转为宽格式二维矩阵,这是seaborn热力图要求的数据结构
  • ListedColormap:自定义离散颜色映射,直接指定正负值对应的颜色,满足“两种颜色区分”的需求

内容的提问来源于stack exchange,提问作者AaAdams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:23:33