Plt.savefig () сохраняет мой график с правильным размером, когда я вызываю функцию load_dendro () в терминале, но когда он вызывается в классе, он имеет 432x288 пикселей.Я использую Python на Windows, мой IDE Spyder.Снимок экрана содержит файл den.png после выполнения полного кода и часть его после выполнения только функции load_dendro.Вот мой код: скриншот
import matplotlib.pyplot as plt
import pandas as pd
import scipy.cluster.hierarchy as sch
from sklearn.preprocessing import MinMaxScaler
from pylab import savefig, figure
dataset = pd.read_csv('Mall_Customers.csv')
x = dataset.loc[:, ['Age','Spending_Score', 'Annual_Income']].values
mms = MinMaxScaler()
X = mms.fit_transform(x)
def llf(id):
return '[Age: %s, Score: %s, Income: %s]' % (dataset['Age'][id], dataset['Spending_Score'][id], dataset['Annual_Income'][id])
def load_dendro():
sch.dendrogram(sch.linkage(X, method = 'ward'), leaf_rotation=0,leaf_label_func=llf, leaf_font_size =10, orientation = 'right')
plt.rcParams['figure.figsize'] = [20, 40]
plt.savefig('den.png')
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Ddndr(object):
def setupUidndr(self, Ddndr):
Ddndr.setObjectName("Ddndr")
Ddndr.resize(1055, 806)
self.dendro = QtWidgets.QLabel(Ddndr)
self.dendro.setGeometry(QtCore.QRect(10, 20, 1440, 2880))
self.dendro.setFrameShape(QtWidgets.QFrame.Box)
self.dendro.setObjectName("dendro")
#load dendro below
sch.dendrogram(sch.linkage(X, method = 'ward'), leaf_rotation=0,leaf_label_func=llf, leaf_font_size =10, orientation = 'right')
plt.rcParams['figure.figsize'] = [20, 40]
plt.savefig('den.png')
pixmap = QtGui.QPixmap("den.jpg")
self.dendro.setPixmap(pixmap)
self.dendro.setAlignment(QtCore.Qt.AlignCenter)
self.retranslateUi(Ddndr)
QtCore.QMetaObject.connectSlotsByName(Ddndr)
def retranslateUi(self, Ddndr):
_translate = QtCore.QCoreApplication.translate
Ddndr.setWindowTitle(_translate("Ddndr", "Dendrogram"))
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
Ddndr = QtWidgets.QDialog()
ui = Ui_Ddndr()
ui.setupUidndr(Ddndr)
Ddndr.show()
sys.exit(app.exec_())