python中plot的图像类型_pythonmatplotlib:图像的绘制实际上前⾯我们就已经⽤到了图像的绘制,如:
io.imshow(img)
这⼀⾏代码的实质是利⽤matplotlib包对图⽚进⾏绘制,绘制成功后,返回⼀个matplotlib类型的数据。因此,我们也可以这样写:
import matplotlib.pyplot as plt
plt.imshow(img)
imshow()函数格式为:
matplotlib.pyplot.imshow(X, cmap=None)
X: 要绘制的图像或数组。
cmap: 颜⾊图谱(colormap), 默认绘制为RGB(A)颜⾊空间。
其它可选的颜⾊图谱如下列表:
颜⾊图谱描述
autumn
红-橙-黄
bone
⿊-⽩,x线
cool
青-洋红
copper
⿊-铜
flag
红-⽩-蓝-⿊
gray
⿊-⽩
hot
⿊-红-黄-⽩
hsv
hsv颜⾊空间, 红-黄-绿-青-蓝-洋红-红
inferno
⿊-红-黄
jet
蓝-青-黄-红
magma
⿊-红-⽩
pink
⿊-粉-⽩
plasma
绿-红-黄
prism
红-黄-绿-蓝-紫-...-绿模式
spring
洋红-黄
summer
绿-黄
viridis
蓝-绿-黄
winter
蓝-绿
⽤的⽐较多的有gray,jet等,如:
plt.imshow(ay)
plt.imshow(img,jet)
在窗⼝上绘制完图⽚后,返回⼀个AxesImage对象。要在窗⼝上显⽰这个对象,我们可以调⽤show()函数来进⾏显⽰,但进⾏练习的时候(ipython环境中),⼀般我们可以省略show()函数,也能⾃动显⽰出来。
from skimage import io,data
img=data.astronaut()
dst=io.imshow(img)
print(type(dst))
io.show()
显⽰为:
可以看到,类型是'matplotlib.image.AxesImage'。显⽰⼀张图⽚,我们通常更愿意这样写:
import matplotlib.pyplot as plt
from skimage import io,data
img=data.astronaut()
plt.imshow(img)
plt.show()
matplotlib是⼀个专业绘图的库,相当于matlab中的plot,可以设置多个figure窗⼝,设置figure的标题,隐藏坐标尺,甚⾄可以使⽤subplot 在⼀个figure中显⽰多张图⽚。⼀般我们可以这样导⼊matplotlib库:
import matplotlib.pyplot as plt
也就是说,我们绘图实际上⽤的是matplotlib包的pyplot模块。
⼀、⽤figure函数和subplot函数分别创建主窗⼝与⼦图
例:分开并同时显⽰宇航员图⽚的三个通道
from skimage import data
import matplotlib.pyplot as plt
img=data.astronaut()
plt.figure(num='astronaut',figsize=(8,8)) #创建⼀个名为astronaut的窗⼝,并设置⼤⼩
plt.subplot(2,2,1) #将窗⼝分为两⾏两列四个⼦图,则可显⽰四幅图⽚
plt.title('origin image') #第⼀幅图⽚标题
plt.imshow(img) #绘制第⼀幅图⽚
plt.subplot(2,2,2) #第⼆个⼦图
plt.title('R channel') #第⼆幅图⽚标题
plt.imshow(img[:,:,0],ay) #绘制第⼆幅图⽚,且为灰度图
plt.axis('off') #不显⽰坐标尺⼨
plt.subplot(2,2,3) #第三个⼦图
plt.title('G channel') #第三幅图⽚标题
plt.imshow(img[:,:,1],ay) #绘制第三幅图⽚,且为灰度图
plt.axis('off') #不显⽰坐标尺⼨
plt.subplot(2,2,4) #第四个⼦图
plt.title('B channel') #第四幅图⽚标题
plt.imshow(img[:,:,2],ay) #绘制第四幅图⽚,且为灰度图
plt.axis('off') #不显⽰坐标尺⼨
plt.show() #显⽰窗⼝
在图⽚绘制过程中,我们⽤matplotlib.pyplot模块下的figure()函数来创建显⽰窗⼝,该函数的格式为:
matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None)
所有参数都是可选的,都有默认值,因此调⽤该函数时可以不带任何参数,其中:
num: 整型或字符型都可以。如果设置为整型,则该整型数字表⽰窗⼝的序号。如果设置为字符型,则该字符串表⽰窗⼝的名称。⽤该参数来命名窗⼝,如果两个窗⼝序号或名相同,则后⼀个窗⼝会覆盖前⼀个窗⼝。
figsize: 设置窗⼝⼤⼩。是⼀个tuple型的整数,如figsize=(8,8)
dpi: 整形数字,表⽰窗⼝的分辨率。
facecolor: 窗⼝的背景颜⾊。
edgecolor: 窗⼝的边框颜⾊。
⽤figure()函数创建的窗⼝,只能显⽰⼀幅图⽚,如果想要显⽰多幅图⽚,则需要将这个窗⼝再划分为⼏个⼦图,在每个⼦图中显⽰不同的图⽚。我们可以使⽤subplot()函数来划分⼦图,函数格式为:
matplotlib.pyplot.subplot(nrows, ncols, plot_number)
nrows: ⼦图的⾏数。
ncols: ⼦图的列数。
plot_number: 当前⼦图的编号。
如:
plt.subplot(2,2,1)
则表⽰将figure窗⼝划分成了2⾏2列共4个⼦图,当前为第1个⼦图。我们有时也可以⽤这种写法:
plt.subplot(221)
两种写法效果是⼀样的。每个⼦图的标题可⽤title()函数来设置,是否使⽤坐标尺可⽤axis()函数来设置,如:
plt.subplot(221)
plt.title("first subwindow")
plt.axis('off')
⼆、⽤subplots来创建显⽰窗⼝与划分⼦图
除了上⾯那种⽅法创建显⽰窗⼝和划分⼦图,还有另外⼀种编写⽅法也可以,如下例:
import matplotlib.pyplot as plt
from skimage import data,color
img = data.immunohistochemistry()
matplotlib中subplothsv = b2hsv(img)
fig, axes = plt.subplots(2, 2, figsize=(7, 6))
ax0, ax1, ax2, ax3 = axes.ravel()
ax0.imshow(img)
ax0.set_title("Original image")
ax1.imshow(hsv[:, :, 0], ay)
ax1.set_title("H")
ax2.imshow(hsv[:, :, 1], ay)
ax2.set_title("S")
ax3.imshow(hsv[:, :, 2], ay)
ax3.set_title("V")
for ax in axes.ravel():
ax.axis('off')
fig.tight_layout() #⾃动调整subplot间的参数
直接⽤subplots()函数来创建并划分窗⼝。注意,⽐前⾯的subplot()函数多了⼀个s,该函数格式为:matplotlib.pyplot.subplots(nrows=1, ncols=1)
nrows: 所有⼦图⾏数,默认为1。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论