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

Matplotlib中如何为不同大小的三角标记顶部添加注释?

解决方法:将注释移至三角标记顶部

要把注释放到三角标记(marker=10,向上三角形)的顶部,核心是根据标记的大小调整注释的偏移位置——因为scatter的s参数控制标记面积,我们需要基于这个值计算合适的偏移量,确保注释始终对齐三角顶点。

修改后的代码如下:

import matplotlib.pyplot as plt
import math

X = [1,2,3,4,5]
Y = [1,1,1,1,1]
labels = 'ABCDE'
sizes = [1000, 1500, 2000, 2500, 3000]

fig, ax = plt.subplots()

ax.scatter(X, Y, s=sizes, marker=10)

for x, y, label, size in zip(X, Y, labels, sizes):
    # 根据标记面积计算向上偏移量,系数可根据实际效果微调
    offset = math.sqrt(size) / 4
    ax.annotate(
        label, 
        (x, y), 
        fontsize=12,
        xytext=(0, offset),  # 相对于标记中心向上偏移
        textcoords='offset points',
        ha='center'  # 水平居中对齐标记
    )

plt.show()

关键调整说明:

  • xytext=(0, offset):指定注释相对于标记中心的偏移量,仅向上偏移所以x方向设为0,y方向用计算出的offset值。
  • textcoords='offset points':明确偏移单位为磅(points),和标记尺寸单位保持一致。
  • ha='center':保证注释水平方向与标记中心对齐,避免偏移后错位。
  • 偏移量计算:用math.sqrt(size)将标记面积转换为线性尺寸,再除以系数(这里用4),确保不同大小的标记都能让注释刚好落在三角顶部,你可以根据实际显示效果微调这个系数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:32:28