日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

matplotlib 的使用技巧(局部放大图、坐标轴设置、边框设置、横纵比设置)

發(fā)布時(shí)間:2024/3/24 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matplotlib 的使用技巧(局部放大图、坐标轴设置、边框设置、横纵比设置) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 前言
  • 使用步驟 提示:功能可相互獨(dú)立,不必按此目錄順序執(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 畫圖占滿整個(gè)畫圖,無白邊
  • 參考資料


前言

提示:Matplotlib 使用技巧
局部放大圖
設(shè)置繪圖橫縱比
邊框改變顏色、隱藏邊框
翻轉(zhuǎn)坐標(biāo)軸、隱藏坐標(biāo)軸、調(diào)整坐標(biāo)軸顯示范圍


提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

使用步驟 提示:功能可相互獨(dú)立,不必按此目錄順序執(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_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.局部放大圖(調(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里的

axes:父坐標(biāo)系 axins:子坐標(biāo)系width, height:子坐標(biāo)系的寬度和高度(百分比形式或者浮點(diǎn)數(shù)個(gè)數(shù))浮點(diǎn)數(shù):單位英寸百分比:相對于axes的bbox的比例loc:子坐標(biāo)系的位置'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: 在插圖坐標(biāo)空間與bbox_to_anchor之間填充 默認(rèn)值是0.5 單位是axes的字體尺寸,默認(rèn)字體尺寸是10points,所以borderpad=0.5等于填充5points 想要x0 y0 與原點(diǎn)對齊,則設(shè)置 borderpad=0bbox_to_anchor:邊界框,四元數(shù)組(x0, y0, width, height) bbox_transform:從父坐標(biāo)系到子坐標(biāo)系的幾何映射

固定坐標(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)系的四個(gè)角 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個(gè)邊框 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ù)點(diǎn)到繪圖單位的縮放比例相同

使用以下命令手動(dòng)設(shè)置縱橫比:
axes.get_data_ratio() 獲取原始繪圖數(shù)據(jù)的比率,倒數(shù)的值傳遞給 set_aspect()。

axes.set_aspect(1.0/(axes.get_data_ratio()), adjustable='box')

改變橫縱比相等 效果展示

4 畫圖占滿整個(gè)畫圖,無白邊

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的圖片如何充滿整個(gè)畫布

總結(jié)

以上是生活随笔為你收集整理的matplotlib 的使用技巧(局部放大图、坐标轴设置、边框设置、横纵比设置)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。