Python使用matplotlib 画矩形的三种方式分析


Posted in Python onOctober 31, 2019

本文实例讲述了Python使用matplotlib 画矩形的三种方式。分享给大家供大家参考,具体如下:

假设矩形两点坐标如下,分别为:x1, y1, x2, y2

cat_dict['bbox'][i] = (min_row, min_col, max_row, max_col)

1. plt.plot(x,y)

这种方式画的矩形 因为边距的问题 会放缩

plt.plot([cat_dict['bbox'][i][1], cat_dict['bbox'][i][3], cat_dict['bbox'][i][3], cat_dict['bbox'][i][1], cat_dict['bbox'][i][1]], # col
     [cat_dict['bbox'][i][0], cat_dict['bbox'][i][0], cat_dict['bbox'][i][2], cat_dict['bbox'][i][2], cat_dict['bbox'][i][0]], # row
     color=[c / 255 for c in label_colors[cat_idx]], marker='.', ms=0)

2. ax.add_line(Line2D)

添加 4 条直线的方式,比较繁琐

from matplotlib.lines import Line2D
color = [c / 255 for c in label_colors[cat_idx]]
ax.add_line(Line2D([cat_dict['bbox'][i][1], cat_dict['bbox'][i][3]],
          [cat_dict['bbox'][i][0], cat_dict['bbox'][i][0]], 
          linewidth=2, 
          color=color))
ax.add_line(Line2D([cat_dict['bbox'][i][3], cat_dict['bbox'][i][3]],
          [cat_dict['bbox'][i][0], cat_dict['bbox'][i][2]], 
          linewidth=2, 
          color=color))
ax.add_line(Line2D([cat_dict['bbox'][i][3], cat_dict['bbox'][i][1]],
          [cat_dict['bbox'][i][2], cat_dict['bbox'][i][2]], 
          linewidth=2, 
          color=color))
ax.add_line(Line2D([cat_dict['bbox'][i][1], cat_dict['bbox'][i][1]],
          [cat_dict['bbox'][i][2], cat_dict['bbox'][i][0]], 
          linewidth=2, 
          color=color))

3. plt.gca().add_patch(plt.Rectangle())

最好的一种实现方式,fast rcnn 也是这么用的,传送门

plt.gca().add_patch(plt.Rectangle(xy=(cat_dict['bbox'][i][1], cat_dict['bbox'][i][0]),
width=cat_dict['bbox'][i][3] - cat_dict['bbox'][i][1], 
height=cat_dict['bbox'][i][2] - cat_dict['bbox'][i][0],
edgecolor=[c / 255 for c in label_colors[cat_idx]],
fill=False, linewidth=2))

Python使用matplotlib 画矩形的三种方式分析

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中的二叉树查找算法模块使用指南
Jul 04 Python
举例讲解Python的lambda语句声明匿名函数的用法
Jul 01 Python
pandas创建新Dataframe并添加多行的实例
Apr 08 Python
python 快速把超大txt文件转存为csv的实例
Oct 26 Python
Python版名片管理系统
Nov 30 Python
Python面向对象基础入门之设置对象属性
Dec 11 Python
Django中的FBV和CBV用法详解
Sep 15 Python
python 实现一个反向单位矩阵示例
Nov 29 Python
python plt可视化——打印特殊符号和制作图例代码
Apr 17 Python
python 多线程死锁问题的解决方案
Aug 25 Python
如何将json数据转换为python数据
Sep 04 Python
Python游戏开发实例之graphics实现AI五子棋
Nov 01 Python
python实现操作文件(文件夹)
Oct 31 #Python
python用requests实现http请求代码实例
Oct 31 #Python
python zip()函数使用方法解析
Oct 31 #Python
python实现按首字母分类查找功能
Oct 31 #Python
利用python Selenium实现自动登陆京东签到领金币功能
Oct 31 #Python
python+Django实现防止SQL注入的办法
Oct 31 #Python
Python 爬虫实现增加播客访问量的方法实现
Oct 31 #Python
You might like
S900/ ETON E1-XM 收音机
2021/03/02 无线电
thinkPHP5.0框架安装教程
2017/03/25 PHP
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
2010/03/04 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
2013/01/10 Javascript
JS实现的自定义水平滚动字体插件完整实例
2016/06/17 Javascript
js生成随机数(指定范围)的实例代码
2016/07/10 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
关于webuploader插件使用过程遇到的小问题
2016/11/07 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
VUE axios上传图片到七牛的实例代码
2017/07/28 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
es6函数之严格模式用法实例分析
2020/03/17 Javascript
uni-app微信小程序登录授权的实现
2020/05/22 Javascript
JavaScript原生数组函数实例汇总
2020/10/14 Javascript
json.stringify()与json.parse()的区别以及用处
2021/01/25 Javascript
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
常见python正则用法的简单实例
2016/06/21 Python
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
Python数据结构与算法之字典树实现方法示例
2017/12/13 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
使用celery和Django处理异步任务的流程分析
2020/02/19 Python
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
牛津在线药房:Oxford Online Pharmacy
2020/11/16 全球购物
企业宣传策划方案
2014/05/29 职场文书
公司授权委托书范文
2014/08/02 职场文书
个人批评与自我批评
2014/10/15 职场文书
小学大队委竞选口号
2015/12/25 职场文书
初中历史教学反思
2016/02/19 职场文书
如何用六步教会你使用python爬虫爬取数据
2022/04/06 Python
教你如何用cmd快速登录服务器
2022/06/10 Servers