我正在尝试使用matplotlib读取TIFF(有时是PNG)图像,并建立一个类来读取和绘制与对象相关的多个图像。现在,类定义中的代码并不重要。
但是我有一个问题。当我在类定义之前的代码中包含最后一个段落时,我可以读取并显示图像,但是当我在类定义之后包含它时,它将不起作用。 有人可以帮我了解为什么会这样吗?
我已经尝试过使用单张和多张图片
import matplotlib.pyplot as plt
import numpy as np
import math
import random
from matplotlib.ticker import FormatStrFormatter
from mpl_toolkits.mplot3d import Axes3D
import pandas as pd
import matplotlib.image as mpimg
fig,line,labels,ax={},{},[50],{}
X=[3000]
Y=[3000]
Z=[3000]
titles=r'microscopy'
class plotter:
def figures(self, heading, titles, ax, fig, style, lxlim, uxlim, lylim, uylim, xlabel, ylabel):
self.heading=heading
self.titles=titles
self.ax=ax
self.fig=fig
self.style=style
plt.style.use(self.style)
self.fig=plt.figure(self.heading)
self.ax=self.fig.add_subplot(111)
self.lxlim=lxlim
self.uxlim=uxlim
self.lylim=lylim
self.uylim=uylim
self.ax.set_xlabel(xlabel)
self.ax.set_ylabel(ylabel)
self.ax.grid(True)
#self.ax.grid(False)
self.ax.set_xlim([lxlim, uxlim])
self.ax.set_ylim([lylim, uylim])
self.ax.set_title(self.titles,style='italic')
#self.ax.xaxis.set_minor_formatter(FormatStrFormatter("%.2f"))
self.ax.xaxis.set_major_locator(plt.MultipleLocator(50))
self.ax.xaxis.set_major_locator(plt.MaxNLocator(12))
self.ax.yaxis.set_major_locator(plt.MaxNLocator(10))
self.ax.xaxis.set_minor_locator(plt.MultipleLocator(10))
#self.ax.invert_yaxis()
#self.ax.xaxis.tick_top()
#self.ax.xaxis.set_ticks_position('top')
#self.ax.tick_params(labelbottom='off',labeltop='on')
#column_labels = list('ABCD')
#row_labels = list('WXYZ')
#self.ax.set_xticklabels(column_labels, minor=False)
#self.ax.set_yticklabels(row_labels, minor=False)
#self.ax.xaxis.set_major_locator(plt.NullLocator())
#self.ax.yaxis.set_major_locator(plt.NullLocator())
#self.ax.xaxis.set_major_formatter(plt.NullFormatter())
#ticks=np.linspace(200,700,26,endpoint=False)
#ax.tick_params(axis='x', which='minor', bottom=True)
#self.ax.set_xticks(ticks,minor=True)
#self.fig.savefig('figure.png', bbox_inches='tight')
styler = dict(size=11, color='brown')
spectra=plotter()
spectra.figures('Fibres', 'Fibres', ax, fig, 'classic', None, None, None,None,None,None)
image1=mpimg.imread('geter.png')
imgplot = plt.imshow(image1)
#spectra.ax.imshow(image1)
plt.show()
#spectra.ax.axis('off')
当我在类定义之前添加最后一段时,它提供了正确的读取图像数据,但是当它在类定义之后时(如现在的代码所示),我得到的是带有轴和纯黄色的图像。我不明白为什么。我的图像基本上只是一些文件夹排列的屏幕截图。 现在,由于我的类定义不完整,我还没有将对象轴与显示图像绑定在一起。但是我想知道为什么会这样。
2)第二件事是,当我使用
spectra.ax.imshow(....)
代替
plt.imshow(....)
该代码无效,并给出相同的黄色色调图像。