用不同的坐标系统对图形元素进行定位
时间:2022-07-24
本文章向大家介绍用不同的坐标系统对图形元素进行定位,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
当我们在绘制图形元素时,需要通过x轴和y轴的坐标来指定具体的位置,这里的x轴和y轴就是我们最常用的坐标系统。其实在matplotlib中,还有很多其他的坐标系统, 常用的坐标系统主要包括以下3类
1. data,其实就是最常用的x轴和y轴了,通过指定xlim和ylim范围内的数值来指定元素的位置,
2. axes,将axes的左下角视为(0, 0), 右上角视为(1,1),从而对元素进行定位
3. figure, 将figure的左下角视为(0, 0), 右上角视为(1,1),从而对元素进行定位
通过transform参数,可以显式指定坐标系统,通过几个例子来看下各自的用法,第一个例子是运用axes坐标系统,快速在axes的中心绘制一个元素,代码如下
>>> x = np.linspace(0, 3 * np.pi, 50)
>>> y = np.sin(x)
>>> plt.plot(x, y)
>>> ax=plt.gca()
>>> plt.text(x=0.5, y=0.5, s='text',transform=ax.transAxes)
>>> plt.show()
通过ax.transAxes指定使用axes坐标系统,(0.5, 0.5)就是图片的中心,输出结果如下
第二个例子,在axes边框之外标记文字,代码如下
>>> x = np.linspace(0, 3 * np.pi, 50)
>>> y = np.sin(x)
>>> plt.plot(x, y)
>>> fig=plt.gcf()
>>> plt.text(x=0.5, y=0.95, s='sin', bbox=dict(boxstyle='round',facecolor='0.8'),transform=fig.transFigure)
>>> plt.show()
通过fig.transFigure指定使用figure坐标系统, 输出结果如下
第三个例子,在两幅图像之间绘制连线,代码如下
>>> x = np.linspace(0, 3 * np.pi, 50)
>>> fig, (ax1, ax2) = plt.subplots(2, 1)
>>> ax1.plot(x, np.sin(x))
>>> ax2.plot(x, np.cos(x))
>>>
>>> con = ConnectionPatch(
... xyA=(np.pi, np.cos(np.pi)),
... coordsA=ax2.transData,
... xyB=(2 * np.pi, np.sin(2 * np.pi)),
... coordsB=ax1.transData)
>>>
>>> ax2.add_artist(con)
>>> plt.show()
通过ax.transData指定使用data坐标系统, 输出结果如下
针对不同场景,选取最适合的坐标系统,可以极大提高画图的效率。
- 降维之pca算法
- 聚类之dbscan算法
- ubuntu 使用sudo apt-get update 出现 被配置多次导致无法升级错误解决方法
- morestack与goroutine pool
- 关于python使用threadpool中的函数单个参数和多个参数用法举例
- python科学计算之numpy
- 关于python使用cv画矩形并填充颜色同时填充文字
- Go语言入门基础
- 【前端编程】加载第三方JS的各种姿势
- ubuntu16中遇到libgstreamer-0.10.so.0缺失解决方案
- 关于文件的压缩与解压
- Storm读取Kafka数据是如何实现的
- faster-rcnn在编译时遇到的一些问题
- 使用感知机训练加法模型
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法