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的urllib库提交WEB表单
Feb 24 Python
使用python检测手机QQ在线状态的脚本代码
Feb 10 Python
python操作MySQL数据库具体方法
Oct 28 Python
Python中字符串的常见操作技巧总结
Jul 28 Python
python如何爬取个性签名
Jun 19 Python
Python 忽略warning的输出方法
Oct 18 Python
由面试题加深对Django的认识理解
Jul 19 Python
Django 实现前端图片压缩功能的方法
Aug 07 Python
django echarts饼图数据动态加载的实例
Aug 12 Python
Python中如何将一个类方法变为多个方法
Dec 30 Python
Python第三方库的几种安装方式(小结)
Apr 03 Python
python如何利用Mitmproxy抓包
Oct 10 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
php中理解print EOT分界符和echo EOT的用法区别小结
2010/02/21 PHP
PHP备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
Zend Framework教程之Zend_Config_Ini用法分析
2016/03/23 PHP
记录一次排查PHP脚本执行卡住的问题
2016/12/27 PHP
jquery URL参数判断,确定菜单样式
2010/05/31 Javascript
javascript正则表达式中参数g(全局)的作用
2010/11/11 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
2013/09/11 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
使用Fullpage插件快速开发整屏翻页的页面
2017/09/13 Javascript
简单介绍react redux的中间件的使用
2018/04/06 Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
2018/11/13 Javascript
详解webpack编译速度提升之DllPlugin
2019/02/05 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
python实现爬山算法的思路详解
2019/04/09 Python
Python后台开发Django会话控制的实现
2019/04/15 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
对python中的float除法和整除法的实例详解
2019/07/20 Python
Python Switch Case三种实现方法代码实例
2020/06/18 Python
HTML5 Canvas实现文本对齐的方法总结
2016/03/24 HTML / CSS
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
艺术专业大学生自我评价
2013/09/22 职场文书
大学生职业生涯规划书
2014/03/14 职场文书
信用社竞聘演讲稿
2014/05/16 职场文书
人事任命书范文
2014/06/04 职场文书
大学生就业自荐书
2014/06/16 职场文书
学习党代会心得体会
2014/09/05 职场文书
统计学教授推荐信
2014/09/18 职场文书
2015年个人工作总结报告
2015/04/25 职场文书
自定义函数实现单词排序并运用于PostgreSQL(实现代码)
2021/04/22 PostgreSQL
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL