Python matplotlib сохраняет графики с неверным размером внутри класса - PullRequest
0 голосов
/ 14 декабря 2018

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_())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...