Создавайте графики и диаграммы БЕЗ использования matplotlib в pyqt5 - PullRequest
0 голосов
/ 10 января 2019

У меня есть дестопаппликация, написанная на pyqt5. Я хочу отобразить круговую диаграмму и гистограмму.

Я могу сделать это с помощью matplotlib. Но сделать exe matplotlib не получится ... Итак, вот вопрос: есть ли другой способ показать графики и графики в приложении, а не с помощью matplotlib?

Я нашел эту ссылку ссылка но я не могу интегрировать это в свой код ... или, может быть, я просто делаю что-то действительно неправильно. И я не нашел другого способа, как показывать гистограммы. У кого-нибудь есть предложения?

Вот мой код:

class EllipsItem(QtWidgets.QGraphicsEllipseItem):
    def paint(self, painter, option, widget=None):
        super(EllipsItem, self).paint(painter, option, widget)

        painter.save()
        families = [1, 2]
        names = ['name1', 'nam2']
        total = 0
        set_angle = 0
        count1 = 0
        colours = []
        total = sum(families)


        for count in range(len(families)):
            number = []
            for count in range(3):
                number.append(random.randrange(0, 255))
            colours.append(QColor(number[0], number[1], number[2]))
        for family in families:
            # Max span is 5760, so we have to calculate corresponding span angle
            angle = round(float(family * 5760) / total)
            painter.setPos(0, 0)
            painter.setStartAngle(set_angle)
            painter.setSpanAngle(angle)
            painter.setBrush(colours[count1])
            set_angle += angle
            count1 += 1
        painter.restore()


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        scene = QtWidgets.QGraphicsScene(self)
        self.view = QtWidgets.QGraphicsView(scene)
        self.setCentralWidget(self.view)
        self.view.setHidden(False)

        self.work_file = QtWidgets.QPushButton("Durchsuchen LV", self)
        self.work_file.setGeometry(QtCore.QRect(12, 20, 250, 30))
        self.work_file.clicked.connect(self.on_click_work_lv)

        rect_item = EllipsItem(QtCore.QRectF(0, 0, 300, 300))
        scene.addItem(rect_item)

    def on_click_work_lv(self):
       self.view.setHidden(True)


if __name__ == '__main__':
    import sys

    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.resize(640, 480)
    w.show()
    sys.exit(app.exec_())
...