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
相关产品推荐
相关产品推荐

