07-1SciPy繪圖工具的使用 scipy 積分求解與繪圖工具matplotlib.pyplot及scipy.misc 使用、檔案輸入輸出
scipy 積分求解與繪圖工具matplotlib.pyplot及scipy.misc 使用
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
# scipy求解積分
from scipy.integrate import quad
# 繪圖專用的工具
import matplotlib.pyplot as plt
# 表示把matplotlib生成的影像繪製到當前notebook當中
%matplotlib inline
求積分
確認不規則圖形的函式曲線
f = lambda x:(1-x**2)**0.5
確認不規則圖形x軸的界限(-1,1)
b = 1
a = -1
定義想x,y的函式
x = np.linspace(-1,1,100)
y = f(x)
繪製線性圖
plt.plot(x,y)
plt.plot(x,-y)
調整座標軸刻度的比例一致
plt.axis('equal')
確認結果是否正確,結果為pi,即為正確
half_area,error = quad(f,a,b)
2*half_area/1
結果為:
3.1415926535897967
繪製正弦曲線
x1 = np.linspace(0,2*np.pi,100)
y1 = np.sin(x1)
plt.plot(x1,y1)
檔案輸入輸出
處理文字輸入
import scipy.io as io
處理圖片輸入輸出
import scipy.misc as misc
把資料儲存為2進位制格式的資料
io.savemat()
讀取二進位制的資料檔案
io.loadmat()
資料寫入,支援陣列物件
xiaoming = np.random.randint(0,100,size=3)
index = np.array(['語文','數學','英語'])
mdic = {
'xiaomingkey':xiaoming,
'indexkey':index
}
# 不需要制定檔案字尾,只儲存為mat格式
io.savemat('xiaomingpath',mdict=mdic)
讀取二進位制檔案
xiaoming = io.loadmat(‘xiaomingpath.mat’)
display(xiaoming['xiaomingkey'],xiaoming['indexkey'])
結果為:
array([[76, 98, 90]])
array(['語文', '數學', '英語'], dtype='<U2')
【注意】 misc所有的功能都已經被其他類庫替代
圖片讀取:misc.imread()
圖片儲存:misc.imsave()
新增濾鏡效果:misc.imfilter()
調整圖片大小:misc.imresize()
調整圖片旋轉角度:misc.imrotate()
圖片展示:misc.imshow()
plt.imshow(misc.imread('./123.jpg'))
使用imageio.imread替代misc.imread()
from imageio import imread
plt.imshow(imread('./123.jpg'))
meixi = plt.imread('./123.jpg')
meixi.shape
結果為:
(1086, 2010, 3)
將圖片黑白化
plt.imshow(meixi.max(axis=2),cmap='gray')
將黑白圖片儲存
from imageio import imwrite
gray_meixi = meixi.max(axis=2)
imwrite('gray_meixi2.jpg',gray_meixi)
濾鏡效果
# imfiter引數選項:'blur', 'contour', 'detail', 'edge_enhance', 'edge_enhance_more', 'emboss', 'find_edges', 'smooth', 'smooth_more', 'sharpen'
plt.imshow(misc.imfilter(meixi,'contour'))
使用0-100之間的數,設定原始影像的百分比
plt.imshow(misc.imresize(meixi,50))
使用0-1之間的小數,設定原始影像的比例
plt.imshow(misc.imresize(meixi,0.5))
分別制定(heigth,width)的尺寸來修該原始圖片大小
plt.imshow(misc.imresize(meixi,(200,300)))
使用skimage處理圖片的大小
from skimage.transform import resize
plt.imshow(resize(meixi,output_shape=(300,400),mode='reflect'))
使用misc.imrotate不會改變原始圖片的形狀
plt.imshow(misc.imrotate(meixi,90,interp='bilinear'))
使用skimage.transform.rotate處理圖片
from skimage.transform import rotate
# mode 是設定空白處的填充方式 'constant', 'edge', 'symmetric', 'reflect', 'wrap'
plt.imshow(rotate(meixi,angle=90,mode='reflect'))
SciPy 中ndimage的使用
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
from scipy import ndimage
# 訊號處理--- 維納濾波器
from scipy.signal import wiener
from scipy import misc
import matplotlib.pyplot as plt
%matplotlib inline
旋轉圖片:ndimage.rotate()
圖片縮放:ndimage.zoom()
圖片移動:ndimage.shift()
高斯濾波器:ndimage.gaussian_filter()
中止濾波器:ndimage.median_filter()
維納濾波器:wiener()
可選的cmap字串
Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_r, Dark2, Dark2_r, GnBu, GnBu_r, Greens, Greens_r, Greys, Greys_r, OrRd, OrRd_r, Oranges, Oranges_r, PRGn, PRGn_r, Paired, Paired_r, Pastel1, Pastel1_r, Pastel2, Pastel2_r, PiYG, PiYG_r, PuBu, PuBuGn, PuBuGn_r, PuBu_r, PuOr, PuOr_r, PuRd, PuRd_r, Purples, Purples_r, RdBu, RdBu_r, RdGy, RdGy_r, RdPu, RdPu_r, RdYlBu, RdYlBu_r, RdYlGn, RdYlGn_r, Reds, Reds_r, Set1, Set1_r, Set2, Set2_r, Set3, Set3_r, Spectral, Spectral_r, Vega10, Vega10_r, Vega20, Vega20_r, Vega20b, Vega20b_r, Vega20c, Vega20c_r, Wistia, Wistia_r, YlGn, YlGnBu, YlGnBu_r, YlGn_r, YlOrBr, YlOrBr_r, YlOrRd, YlOrRd_r, afmhot, afmhot_r, autumn, autumn_r, binary, binary_r, bone, bone_r, brg, brg_r, bwr, bwr_r, cool, cool_r, coolwarm, coolwarm_r, copper, copper_r, cubehelix, cubehelix_r, flag, flag_r, gist_earth, gist_earth_r, gist_gray, gist_gray_r, gist_heat, gist_heat_r, gist_ncar, gist_ncar_r, gist_rainbow, gist_rainbow_r, gist_stern, gist_stern_r, gist_yarg, gist_yarg_r, gnuplot, gnuplot2, gnuplot2_r, gnuplot_r, gray, gray_r, hot, hot_r, hsv, hsv_r, inferno, inferno_r, jet, jet_r, magma, magma_r, nipy_spectral, nipy_spectral_r, ocean, ocean_r, pink, pink_r, plasma, plasma_r, prism, prism_r, rainbow, rainbow_r, seismic, seismic_r, spectral, spectral_r, spring, spring_r, summer, summer_r, tab10, tab10_r, tab20, tab20_r, tab20b, tab20b_r, tab20c, tab20c_r, terrain, terrain_r, viridis, viridis_r, winter, winter_r
載入一張misc提供的現有圖片
cmap 制定圖片的色調
0-255 黑—白 灰度值越大,越趨向於白,越小,越趨向於色調的主色
plt.imshow(misc.face(gray=True),cmap='summer')
jpg uint8 0-255;png float32 0.-1.; 255 白;0 黑
color_test = np.full(shape=(100,100,3),fill_value=255,dtype=np.uint8)
plt.imshow(color_test)
face = misc.face(gray=True)
face.shape
結果為:
(768, 1024)
plt.imshow(misc.imrotate(face,90))
ndimage的旋轉會修改圖片的形狀,旋轉產生的黑邊就是填充的0值
plt.imshow(ndimage.rotate(face,60))
zoom 設定為 float 圖片放大的倍數,支援0.3–1;zoom 設定為列表,圖片在不同軸以不同比例拉伸、壓縮
plt.imshow(ndimage.zoom(face,zoom=[2,3]))
shift 設定的是畫素大小,mode 設定黑白的填充模式:‘constant’, ‘nearest’, ‘reflect’, ‘mirror’ or ‘wrap’
plt.imshow(ndimage.shift(face,shift=100,mode='nearest'),cmap='gray')
濾波處理
moon_landing = plt.imread('moonlanding.png')
plt.imshow(moon_landing,cmap='gray')
moon_landing.shape
plt.imshow(ndimage.gaussian_filter(moon_landing,sigma=1),cmap='gray')
空值、異常值的填充一般使用如下三個指標
- 平均值
- 中位數
- 眾數
如果哪一種都不合適,那就drop
plt.imshow(ndimage.median_filter(moon_landing,size=9),cmap='gray')
plt.imshow(wiener(moon_landing,mysize=7),cmap='gray')
相關文章
- word 的使用(七) —— 繪圖工具繪圖
- 繪圖工具繪圖
- R語言中繪圖設定不輸出繪圖內容R語言繪圖
- 任務2 使用Canva的繪圖工具繪圖
- Zwibbler—前端Canvas繪圖工具使用記錄前端Canvas繪圖
- CAD繪圖工具中的繪線命令繪圖
- C輸入輸出與檔案
- EazyDraw 向量圖繪製工具
- python:檔案的輸入與輸出Python
- 專案整合管理主要輸入、工具、輸出
- java_檔案輸入與輸出Java
- Artstudio Pro Mac,繪圖與圖片編輯工具Mac繪圖
- CAD繪圖工具——橢圓繪圖
- DrawPad 圖形繪畫工具
- DrawPad圖形繪畫工具
- Shapes for mac(向量繪圖工具)Mac繪圖
- 使用索引繪圖(轉)索引繪圖
- 瞭解下C# 檔案的輸入與輸出C#
- 使用joinjs繪製流程圖(五)-流程圖繪製JS流程圖
- 排序,檔案輸入輸出排序
- 檔案操作-輸入輸出
- CAD繪圖工具中的圓命令繪圖
- CAD繪圖工具中的點命令繪圖
- Jquery實現拖拽式繪圖工具jQuery繪圖
- DrawPad for mac 圖形繪畫工具Mac
- DrawPad for mac圖形繪畫工具Mac
- mac圖形繪畫工具:DrawPadMac
- 繪圖程式碼生成工具PaintCode繪圖AI
- prometheus指標終端繪圖工具Prometheus指標繪圖
- python matplot繪圖工具練習Python繪圖
- 使用java繪圖類Graphics繪製圓圈Java繪圖
- 使用css繪製圖形CSS
- 使用Drawing 類繪圖繪圖
- Matlab繪圖(2)透過程式碼進行區域性放大繪圖、多檔案繪圖Matlab繪圖
- C++中的檔案輸入/輸出(3):掌握輸入/輸出流 (轉)C++
- 使用Java NIO 和 NIO2實現檔案輸入/輸出Java
- CS專業科研論文繪圖,及演示動畫可用的工具繪圖動畫
- 小程式繪圖工具painter-json檔案繪製儲存分享圖-可點選任意元素觸發函式繪圖AIJSON函式