Matplotlib中'data'与'axes fraction'的区别及xycoords参数含义问询
关于Matplotlib中
xycoords=('data','axes fraction')的疑问解答 问题描述
请问xycoords=('data','axes fraction')是什么含义?我查阅了Matplotlib官方注释教程文档,其中提到'data'使用轴数据坐标系,但我不太理解其具体含义。另外,根据Matplotlib变换教程文档,'data'是Axes中的数据坐标系,(0, 0)为轴左下角,(1, 1)为轴右上角;而注释教程文档指出'axes fraction'同样是以(0, 0)为轴左下角、(1, 1)为轴右上角。那么'data'和'axes fraction'是同一概念吗?
相关代码示例:
ax.annotate(percent, xy=(x, 0), xycoords=('data','axes fraction'), xytext=(0,-32), textcoords='offset points',va='top' ,ha='center')
解答
1. xycoords=('data','axes fraction')的含义
这是Matplotlib支持的混合坐标设置,表示给注释的x坐标和y坐标分别指定不同的坐标系:
- x坐标采用
'data'(数据坐标系) - y坐标采用
'axes fraction'(轴比例坐标系)
2. 'data'和'axes fraction'的核心区别
两者完全不是同一概念,核心差异在于是否和图表数据绑定:
'data'(数据坐标系):坐标值直接对应图表的实际数据刻度。比如你的x轴数据范围是0到100,那么data坐标系下的x=50就对应x轴刻度50的位置;如果缩放图表或调整数据范围,这个点的位置会跟着数据刻度变化。'axes fraction'(轴比例坐标系):坐标值是Axes容器的相对比例,和数据无关。(0,0)固定是Axes的左下角,(1,1)是右上角,比如y=0永远指Axes的最底部,不管你的y轴数据是0-10还是-100到200,这个位置都不会变。
3. 结合代码示例的具体解释
在给出的代码中:
xy=(x, 0):x是数据坐标系下的数值,会定位到x轴上对应数据的位置;y=0是轴比例坐标系下的0,也就是Axes的最底部边缘。- 再配合
xytext=(0,-32)和textcoords='offset points',注释会从这个定位点再向下偏移32个像素点,最终刚好显示在x轴下方的位置,同时va='top'和ha='center'保证注释文本的顶部居中对齐定位点。
内容的提问来源于stack exchange,提问作者TaterTots'
相关产品推荐
相关产品推荐

