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

如何为seaborn PairGrid对角线添加汇总统计标注并解决相关报错

报错原因

ax.annotate() 方法的第一个参数要求接收字符串类型的文本内容,你直接传入pd.DataFrame(label)对象,matplotlib内部执行s != self._text的布尔判断时,触发了pandas对象的真值判定规则,抛出当前错误。

修正后的完整代码
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
iris = sns.load_dataset('iris')

def summary(x, **kwargs):
    x = pd.Series(x)
    # 计算统计值后转成格式化字符串
    stats = x.describe()[['mean', 'std', 'min', '50%', 'max']].round(1)
    # 拼接成多行对齐文本
    text = '\n'.join([f'{k}: {v}' for k, v in stats.items()])
    ax = plt.gca()
    ax.set_axis_off()
    # 传入字符串格式的统计文本
    ax.annotate(text, xy=(0.1, 0.2), size=12, xycoords=ax.transAxes)

# 旧版seaborn的size参数已更名为height
grd = sns.PairGrid(data=iris, height=2.5)
# 按需绘制上下三角,移除冗余重复绘图逻辑,避免图层覆盖
grd.map_upper(plt.scatter, color='k', s=15, alpha=0.6)
grd.map_lower(sns.kdeplot, cmap='PRGn_r', fill=True)
grd.map_diag(summary)

plt.tight_layout()
plt.show()
额外调整说明
  • 补充了缺失的pandas导入语句,避免未定义报错
  • 调整字体大小和图表尺寸,避免统计文本溢出对角线单元格
  • 移除上下三角重复绘图的冗余代码,你可以根据需求自行调整上下三角的绘图类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:48:04