matplotlib 的使用技巧(局部放大图、坐标轴设置、边框设置、横纵比设置)
文章目錄
- 前言
- 使用步驟 提示:功能可相互獨立,不必按此目錄順序執(zhí)行
- 1.引入庫
- 1.1 繪制初始圖像
- 2.局部放大圖(調(diào)整坐標(biāo)軸顯示范圍、翻轉(zhuǎn)坐標(biāo)軸、隱藏坐標(biāo)軸、邊框改變顏色、隱藏邊框)
- 2.1 繪制嵌入繪制局部放大圖的坐標(biāo)系
- 2.2 在子坐標(biāo)系中繪制原始數(shù)據(jù)
- 2.3 調(diào)整子坐標(biāo)系的顯示范圍 ( 調(diào)整坐標(biāo)軸顯示范圍)
- 2.4 建立父坐標(biāo)系與子坐標(biāo)系的連接線
- 2.5 父坐標(biāo)系翻轉(zhuǎn)y坐標(biāo)軸,為了與子圖顯示方向一致 (翻轉(zhuǎn)坐標(biāo)軸)
- 2.6 調(diào)整子坐標(biāo)系邊框 (邊框顏色、邊框隱藏)
- 2.7 子坐標(biāo)系隱藏坐標(biāo)軸(隱藏坐標(biāo)軸)
- 2.8 局部放大圖效果展示
- 3 設(shè)置繪圖橫縱比
- 4 畫圖占滿整個畫圖,無白邊
- 參考資料
前言
提示:Matplotlib 使用技巧
局部放大圖
設(shè)置繪圖橫縱比
邊框改變顏色、隱藏邊框
翻轉(zhuǎn)坐標(biāo)軸、隱藏坐標(biāo)軸、調(diào)整坐標(biāo)軸顯示范圍
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
使用步驟 提示:功能可相互獨立,不必按此目錄順序執(zhí)行
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_axes1.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.局部放大圖(調(diào)整坐標(biāo)軸顯示范圍、翻轉(zhuǎn)坐標(biāo)軸、隱藏坐標(biāo)軸、邊框改變顏色、隱藏邊框)
2.1 繪制嵌入繪制局部放大圖的坐標(biāo)系
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 參數(shù)說明
注意:bbox外的width height是對于bbox里的
固定坐標(biāo)系的寬度和高度以及邊界框,分別設(shè)置loc為左上、左下、右上(默認(rèn))、右下和中間,效果圖如下:
上圖為轉(zhuǎn)載并進(jìn)行修改:【Matplotlib】 局部放大圖
2.2 在子坐標(biāo)系中繪制原始數(shù)據(jù)
和父坐標(biāo)系的畫圖一致
axins.imshow(image_array[z,:,:])2.3 調(diào)整子坐標(biāo)系的顯示范圍 ( 調(diào)整坐標(biāo)軸顯示范圍)
# 調(diào)整子坐標(biāo)系的顯示范圍 axins.set_xlim(200, 250) axins.set_ylim(100, 150)2.4 建立父坐標(biāo)系與子坐標(biāo)系的連接線
# 建立父坐標(biāo)系與子坐標(biāo)系的連接線 # loc1 loc2: 坐標(biāo)系的四個角 1 (右上) 2 (左上) 3(左下) 4(右下) # facecolor或fc - mpl color spec,默認(rèn)為None,無顏色為'none'。內(nèi)部顏色 # edgecolor或ec - mpl顏色規(guī)范,默認(rèn)為None,無顏色為'none'。 外部顏色(可理解為邊線) # lw 線寬 mark_inset(axes, axins, loc1=2, loc2=4, fc="none", ec='r', lw=1)2.5 父坐標(biāo)系翻轉(zhuǎn)y坐標(biāo)軸,為了與子圖顯示方向一致 (翻轉(zhuǎn)坐標(biāo)軸)
#翻轉(zhuǎn)y坐標(biāo)軸 axes.invert_yaxis()2.6 調(diào)整子坐標(biāo)系邊框 (邊框顏色、邊框隱藏)
# 4個邊框 top、left、right、bottom #設(shè)置所有邊框顏色為紅色 axins.spines[:].set_color('r') #隱藏右上邊框 axins.spines['right'].set_visible(False) axins.spines['top'].set_visible(False)2.7 子坐標(biāo)系隱藏坐標(biāo)軸(隱藏坐標(biāo)軸)
注意:axins.set_axis_off()會影響軸線,刻度線,刻度標(biāo)簽,網(wǎng)格和軸標(biāo)簽
#去刻度線和標(biāo)簽 axins.set_xticks([]) axins.set_yticks([])2.8 局部放大圖效果展示
3 設(shè)置繪圖橫縱比
使用 matplotlib.axes.Axes.set_aspect() 函數(shù)設(shè)置長寬比
如果在函數(shù)中使用等于作為長寬比,則得到的圖在 X 軸和 Y 軸上從數(shù)據(jù)點到繪圖單位的縮放比例相同
使用以下命令手動設(shè)置縱橫比:
axes.get_data_ratio() 獲取原始繪圖數(shù)據(jù)的比率,倒數(shù)的值傳遞給 set_aspect()。
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繪圖(一)-邊框線及坐標(biāo)軸的設(shè)置
Matplotlib示例.256 如何繪制畫中畫效果
matplotlib隱藏刻度線、標(biāo)簽和邊線
看回答:python matplotlib savefig的圖片如何充滿整個畫布
總結(jié)
以上是生活随笔為你收集整理的matplotlib 的使用技巧(局部放大图、坐标轴设置、边框设置、横纵比设置)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 两百行C++代码实现yolov5车辆计数
- 下一篇: 英特尔的低于服务器的作用是什么,什么是英