matplotlib 的使用技巧(局部放大图、坐标轴设置、边框设置、横纵比设置)
文章目录
- 前言
- 使用步骤 提示:功能可相互独立,不必按此目录顺序执行
- 1.引入库
- 1.1 绘制初始图像
- 2.局部放大图(调整坐标轴显示范围、翻转坐标轴、隐藏坐标轴、边框改变颜色、隐藏边框)
- 2.1 绘制嵌入绘制局部放大图的坐标系
- 2.2 在子坐标系中绘制原始数据
- 2.3 调整子坐标系的显示范围 ( 调整坐标轴显示范围)
- 2.4 建立父坐标系与子坐标系的连接线
- 2.5 父坐标系翻转y坐标轴,为了与子图显示方向一致 (翻转坐标轴)
- 2.6 调整子坐标系边框 (边框颜色、边框隐藏)
- 2.7 子坐标系隐藏坐标轴(隐藏坐标轴)
- 2.8 局部放大图效果展示
- 3 设置绘图横纵比
- 4 画图占满整个画图,无白边
- 参考资料
前言
提示:Matplotlib 使用技巧
局部放大图
设置绘图横纵比
边框改变颜色、隐藏边框
翻转坐标轴、隐藏坐标轴、调整坐标轴显示范围
提示:以下是本篇文章正文内容,下面案例可供参考
使用步骤 提示:功能可相互独立,不必按此目录顺序执行
1.引入库
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1.inset_locator import mark_inset
from mpl_toolkits.axes_grid1.inset_locator import inset_axes
1.1 绘制初始图像
image = sitk.ReadImage('xxx.nii') # <class 'SimpleITK.SimpleITK.Image'> 支持dcm\nrrd\nii
image_array = sitk.GetArrayFromImage(image) # z,y,x shape z*512*512
fig, axes = plt.subplots()
axes.imshow(image_array[8,...], cmap='gray')
2.局部放大图(调整坐标轴显示范围、翻转坐标轴、隐藏坐标轴、边框改变颜色、隐藏边框)
2.1 绘制嵌入绘制局部放大图的坐标系
axins = inset_axes(axes, width="50%", height="50%",loc='upper right',borderpad=0,bbox_to_anchor=(0, 0, 1, 1),bbox_transform=axes.transAxes)
inset_axes 参数说明
注意:bbox外的width height是对于bbox里的
axes:父坐标系
axins:子坐标系width, height:子坐标系的宽度和高度(百分比形式或者浮点数个数)浮点数:单位英寸百分比:相对于axes的bbox的比例loc:子坐标系的位置'upper right' : 1,'upper left' : 2,'lower left' : 3,'lower right' : 4,'right' : 5,'center left' : 6,'center right' : 7,'lower center' : 8,'upper center' : 9,'center' : 10borderpad: 在插图坐标空间与bbox_to_anchor之间填充
默认值是0.5 单位是axes的字体尺寸,默认字体尺寸是10points,所以borderpad=0.5等于填充5points
想要x0 y0 与原点对齐,则设置 borderpad=0bbox_to_anchor:边界框,四元数组(x0, y0, width, height)
bbox_transform:从父坐标系到子坐标系的几何映射
固定坐标系的宽度和高度以及边界框,分别设置loc为左上、左下、右上(默认)、右下和中间,效果图如下:
上图为转载并进行修改:【Matplotlib】 局部放大图
2.2 在子坐标系中绘制原始数据
和父坐标系的画图一致
axins.imshow(image_array[z,:,:])
2.3 调整子坐标系的显示范围 ( 调整坐标轴显示范围)
# 调整子坐标系的显示范围
axins.set_xlim(200, 250)
axins.set_ylim(100, 150)
2.4 建立父坐标系与子坐标系的连接线
# 建立父坐标系与子坐标系的连接线
# loc1 loc2: 坐标系的四个角 1 (右上) 2 (左上) 3(左下) 4(右下)
# facecolor或fc - mpl color spec,默认为None,无颜色为'none'。内部颜色
# edgecolor或ec - mpl颜色规范,默认为None,无颜色为'none'。 外部颜色(可理解为边线)
# lw 线宽
mark_inset(axes, axins, loc1=2, loc2=4, fc="none", ec='r', lw=1)
2.5 父坐标系翻转y坐标轴,为了与子图显示方向一致 (翻转坐标轴)
#翻转y坐标轴
axes.invert_yaxis()
2.6 调整子坐标系边框 (边框颜色、边框隐藏)
# 4个边框 top、left、right、bottom
#设置所有边框颜色为红色
axins.spines[:].set_color('r')
#隐藏右上边框
axins.spines['right'].set_visible(False)
axins.spines['top'].set_visible(False)
2.7 子坐标系隐藏坐标轴(隐藏坐标轴)
注意:axins.set_axis_off()会影响轴线,刻度线,刻度标签,网格和轴标签
#去刻度线和标签
axins.set_xticks([])
axins.set_yticks([])
2.8 局部放大图效果展示
3 设置绘图横纵比
使用 matplotlib.axes.Axes.set_aspect() 函数设置长宽比
如果在函数中使用等于作为长宽比,则得到的图在 X 轴和 Y 轴上从数据点到绘图单位的缩放比例相同
使用以下命令手动设置纵横比:
axes.get_data_ratio() 获取原始绘图数据的比率,倒数的值传递给 set_aspect()。
axes.set_aspect(1.0/(axes.get_data_ratio()), adjustable='box')
改变横纵比相等 效果展示
4 画图占满整个画图,无白边
w=image_array[z,...].shape[0]
h=image_array[z,...].shape[1]
dpi=100
fig,axes=plt.subplots(figsize=(w/dpi,h/dpi),dpi=dpi)
axes=fig.add_axes([0,0,1,1])
axes.set_axis_off()axes.imshow()
plt.savefig('./test.png', bbox_inches='tight')
参考资料
【Matplotlib】 局部放大图
如何在 Matplotlib 中绘制等轴的正方形图
Matplotlib绘图(一)-边框线及坐标轴的设置
Matplotlib示例.256 如何绘制画中画效果
matplotlib隐藏刻度线、标签和边线
看回答:python matplotlib savefig的图片如何充满整个画布
matplotlib 的使用技巧(局部放大图、坐标轴设置、边框设置、横纵比设置)相关推荐
- relativelayout设置边框_Android表格布局之设置边框
Android表格布局本身没有边框,不过可以通过背景色的设置可以实现表格边框的显示. 首先可以设置TableRow的背景色,然后设置内容的背景色.根据它们的颜色差就出现了边框.只要微调Content与 ...
- html如何设置边框为圆点虚线,如何设置html虚线边框的方法
如何设置html虚线边框的方法 如何设置html虚线边框的方法 用到CSS样式和HTML标签元素 为了对html不同标签加边框虚线,我们选择几个常用标签对齐设置边框虚线效果. 1.html常用标签 p ...
- 计算机考试中如何设置表格外边框,Excel表格中怎么为单元格区域设置边框
在Excel表格工作表中,我们可以为选中的单元格区域设置各种类型的边框.Excel表格中为单元格区域设置边框的方法其实很简单,下面由学习啦小编告诉你! Excel表格中为单元格区域设置边框的方法 01 ...
- css修饰边框为虚线,css如何设置虚线边框css虚线样式?css设置虚线边框的方法示例...
首页 >web前端>css教程>正文 css如何设置虚线边框?css设置虚线边框的方法示例 原创2018-10- 在网页布局中,有时候为了整体网页的美观可能需要设置虚线边框,那么虚线 ...
- 如何设置jinternalframe无边框_word文档美化技巧:加个边框提升版面颜值
编按:说到Word,大多数人会觉得不就是个打字的,能够承载内容即可.于是,内容密密麻麻地录入.不过,对于有点强迫症的爱美人士来说,总会觉得差了点什么,于是,会对文档小小地美化一下,就比如,为文档页面加 ...
- MATLAB使用技巧之局部放大图的制作及文本箭头的便捷设置
MATLAB使用技巧之局部放大图的制作及文本箭头的便捷设置 文章目录 MATLAB使用技巧之局部放大图的制作及文本箭头的便捷设置 制作局部放大图的方法 文本箭头的便捷设置 小结 本文主要介绍如何在MA ...
- Matplotlib实用绘图技巧总结
在日常的业务数据分析 ,可视化是非常重要的步骤.这里总结了matplotlib常用绘图技巧,希望可以帮助大家更加更加高效的.美观的显示图表.作者:北山啦 Matplotlib 是 Python 的绘图 ...
- Matplotlib使用小技巧(Python3.5版)
Matplotlib使用小技巧(Python3.5版) 参考链接https://mp.weixin.qq.com/s/aMPH4ABeNlRJ5kBWE-vGPg 1.中文显示 Matplotlib默 ...
- 举个栗子!Tableau 技巧(202):用参数为图表设置开关按钮
做数据汇报时,很多时候需要分步骤呈现数据.数据粉反馈的需求:Tableau 视图中的部分图表是否也能设置一个开关,需要它时再让它呈现出来,像 PPT 那样. 其实,这个想法在 Tableau 是可以实 ...
最新文章
- ASP.NET的用户控件
- React 性能优化之批量处理 unstable_batchedUpdates
- Spring 5的最终功能发行版即将来临
- 短代码的java打地鼠_使用JavaScript实现网页版Pongo设计思路及源代码分享
- 从linux刷到windows,我为什么从Linux重新回归到Windows平台
- 网易将在三亚设立海南总部 建设元宇宙产业基地
- NLP纠错 | 恶意短信变体字还原、鲁棒性过滤与文本纠错竞赛概述与简单变体实现...
- 【电源科普】负载调整率
- mac 用 VMware Fusion 安装 ubuntu
- 大学计算机应用基础教程读后感,计算机应用基础的课程学习体会
- 魔兽n服务器网站,wowN服如何进入_魔兽世界Nostalrius服务器入驻攻略_快吧游戏
- k60正交解码FTM1 FTM2 困惑
- python(摄氏度和华氏度的转换)
- 爬虫——获取页面源代码
- ubuntu 下的开机启动项管理命令
- Laravel5.4中文分词搜索-使用 Laravel Scout,Elasticsearch,ik 分词(三)
- 大翻盘!超80亿美元Java侵权案落槌,谷歌胜诉!
- 力扣 417. 太平洋大西洋水流问题
- linux共享打印机smb,centos7 安装cups+smb共享打印机
- java的方法decompress_Java LZ4SafeDecompressor.decompress方法代码示例
热门文章
- 长沙农商银行·2021长沙红色半程马拉松赛报名正式启动啦
- matlab如何将帮助变成简体中文
- 美团饿了么外卖返利app定制开发小程序公众号外卖CPS淘客返利系统
- 【电气专业知识问答】问:厂用电动机如何选择?
- 成为明星程序员的10个提示
- Wish | IT桔子
- android midi 分析,MIDI 架构 | Android 开源项目 | Android Open Source Project
- IOS状态栏和导航栏的控制问题
- 开始记录日常学习,2021年希望更进一步!
- 面对Spring Boot 3最低支持Java17如洪水猛兽袭来,何去何从