文章目录
前言
提示: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' : 10
borderpad: 在插图坐标空间与bbox_to_anchor之间填充
默认值是0.5 单位是axes的字体尺寸,默认字体尺寸是10points,所以borderpad=0.5等于填充5points
想要x0 y0 与原点对齐,则设置 borderpad=0
bbox_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_

最低0.47元/天 解锁文章
2567

被折叠的 条评论
为什么被折叠?



