Ejemplo n.º 1
0
    def __init__(self):
        QWidget.__init__(self)

        self.model = CustomTableModel()

        self.table_view = QTableView()
        self.table_view.setModel(self.model)
        self.table_view.horizontalHeader().setSectionResizeMode(
            QHeaderView.Stretch)
        self.table_view.verticalHeader().setSectionResizeMode(
            QHeaderView.Stretch)

        self.chart = QtCharts.QChart()
        self.chart.setAnimationOptions(QtCharts.QChart.AllAnimations)

        self.series = QtCharts.QLineSeries()
        self.series.setName("Line 1")
        self.mapper = QtCharts.QVXYModelMapper(self)
        self.mapper.setXColumn(0)
        self.mapper.setYColumn(1)
        self.mapper.setSeries(self.series)
        self.mapper.setModel(self.model)
        self.chart.addSeries(self.series)

        # for storing color hex from the series
        seriesColorHex = "#000000"

        # get the color of the series and use it for showing the mapped area
        seriesColorHex = "{}".format(self.series.pen().color().name())
        self.model.add_mapping(seriesColorHex,
                               QRect(0, 0, 2, self.model.rowCount()))

        # series 2
        self.series = QtCharts.QLineSeries()
        self.series.setName("Line 2")

        self.mapper = QtCharts.QVXYModelMapper(self)
        self.mapper.setXColumn(2)
        self.mapper.setYColumn(3)
        self.mapper.setSeries(self.series)
        self.mapper.setModel(self.model)
        self.chart.addSeries(self.series)

        # get the color of the series and use it for showing the mapped area
        seriesColorHex = "{}".format(self.series.pen().color().name())
        self.model.add_mapping(seriesColorHex,
                               QRect(2, 0, 2, self.model.rowCount()))

        self.chart.createDefaultAxes()
        self.chart_view = QtCharts.QChartView(self.chart)
        self.chart_view.setRenderHint(QPainter.Antialiasing)
        self.chart_view.setMinimumSize(640, 480)

        # create main layout
        self.main_layout = QGridLayout()
        self.main_layout.addWidget(self.table_view, 1, 0)
        self.main_layout.addWidget(self.chart_view, 1, 1)
        self.main_layout.setColumnStretch(1, 1)
        self.main_layout.setColumnStretch(0, 0)
        self.setLayout(self.main_layout)
 def add_series(self, name, columns):
     self.series = QtCharts.QLineSeries()
     self.series.setName(name)
     self.mapper = QtCharts.QVXYModelMapper(self)
     self.mapper.setXColumn(columns[0])
     self.mapper.setYColumn(columns[1])
     self.mapper.setSeries(self.series)
     self.mapper.setModel(self.model)
     self.chart.addSeries(self.series)
Ejemplo n.º 3
0
    def add_series(self, name, columns):
        self.series = QtCharts.QLineSeries()
        self.series.setName(name)
        self.mapper = QtCharts.QVXYModelMapper(self)
        self.mapper.setXColumn(columns[0])
        self.mapper.setYColumn(columns[1])
        self.mapper.setSeries(self.series)
        self.mapper.setModel(self.model)
        self.chart.addSeries(self.series)

        # for storing color hex from the series
        seriesColorHex = "#000000"

        # get the color of the series and use it for showing the mapped area
        seriesColorHex = "{}".format(self.series.pen().color().name())
        self.model.add_mapping(seriesColorHex,
            QRect(columns[0], 0, 2, self.model.rowCount()))
Ejemplo n.º 4
0
    def __init__(self, chart):
        QObject.__init__(self)

        self.module_path = os.path.dirname(__file__)
        self.pca_matrix = np.array([])
        self.labels = []

        self.chart = chart
        self.model = Model()
        self.model_selection = Model()

        self.callout = Callout(self.chart)
        self.callout.hide()

        loader = QUiLoader()

        self.main_widget = loader.load(self.module_path + "/ui/table.ui")

        self.table_view = self.main_widget.findChild(QTableView, "table_view")
        table_cfg_frame = self.main_widget.findChild(QFrame, "table_cfg_frame")
        pc_frame = self.main_widget.findChild(QFrame, "pc_frame")
        button_load_data = self.main_widget.findChild(QPushButton,
                                                      "button_load_data")
        self.pc1_variance_ratio = self.main_widget.findChild(
            QLabel, "pc1_variance_ratio")
        self.pc1_singular_value = self.main_widget.findChild(
            QLabel, "pc1_singular_value")
        self.pc2_variance_ratio = self.main_widget.findChild(
            QLabel, "pc2_variance_ratio")
        self.pc2_singular_value = self.main_widget.findChild(
            QLabel, "pc2_singular_value")
        self.legend = self.main_widget.findChild(QLineEdit, "legend_name")
        self.groupbox_axis = self.main_widget.findChild(
            QGroupBox, "groupbox_axis")
        self.groupbox_norm = self.main_widget.findChild(
            QGroupBox, "groupbox_norm")
        self.preprocessing_none = self.main_widget.findChild(
            QRadioButton, "radio_none")
        self.preprocessing_normalize = self.main_widget.findChild(
            QRadioButton, "radio_normalize")
        self.preprocessing_standardize = self.main_widget.findChild(
            QRadioButton, "radio_standardize")
        self.preprocessing_axis_features = self.main_widget.findChild(
            QRadioButton, "radio_axis_features")
        self.preprocessing_axis_samples = self.main_widget.findChild(
            QRadioButton, "radio_axis_samples")
        self.preprocessing_norm_l1 = self.main_widget.findChild(
            QRadioButton, "radio_norm_l1")
        self.preprocessing_norm_l2 = self.main_widget.findChild(
            QRadioButton, "radio_norm_l2")
        self.preprocessing_norm_max = self.main_widget.findChild(
            QRadioButton, "radio_norm_max")
        self.progressbar = self.main_widget.findChild(QProgressBar,
                                                      "progressbar")

        self.progressbar.hide()

        self.table_view.horizontalHeader().setSectionResizeMode(
            QHeaderView.ResizeToContents)
        self.table_view.verticalHeader().setSectionResizeMode(
            QHeaderView.ResizeToContents)
        self.table_view.setModel(self.model)

        # chart series

        self.series = QtCharts.QScatterSeries(self.table_view)
        self.series.setName("table")
        self.series.setMarkerSize(15)
        self.series.hovered.connect(self.on_hover)

        self.chart.addSeries(self.series)

        self.mapper = QtCharts.QVXYModelMapper()
        self.mapper.setXColumn(1)
        self.mapper.setYColumn(2)
        self.mapper.setSeries(self.series)
        self.mapper.setModel(self.model)

        # selection series

        self.series_selection = QtCharts.QScatterSeries(self.table_view)
        self.series_selection.setName("selection")
        self.series_selection.setMarkerShape(
            QtCharts.QScatterSeries.MarkerShapeRectangle)
        self.series_selection.setMarkerSize(15)
        self.series_selection.hovered.connect(self.on_hover)

        self.chart.addSeries(self.series_selection)

        self.mapper_selection = QtCharts.QVXYModelMapper()
        self.mapper_selection.setXColumn(1)
        self.mapper_selection.setYColumn(2)
        self.mapper_selection.setSeries(self.series_selection)
        self.mapper_selection.setModel(self.model_selection)

        # effects

        button_load_data.setGraphicsEffect(self.button_shadow())
        table_cfg_frame.setGraphicsEffect(self.card_shadow())
        pc_frame.setGraphicsEffect(self.card_shadow())

        # signals

        button_load_data.clicked.connect(self.open_file)
        self.table_view.selectionModel().selectionChanged.connect(
            self.selection_changed)
        self.legend.returnPressed.connect(self.update_legend)
        self.preprocessing_none.toggled.connect(self.on_preprocessing_changed)
        self.preprocessing_normalize.toggled.connect(
            self.on_preprocessing_changed)
        self.preprocessing_standardize.toggled.connect(
            self.on_preprocessing_changed)
        self.preprocessing_axis_features.toggled.connect(
            self.on_preprocessing_axis_changed)
        self.preprocessing_axis_samples.toggled.connect(
            self.on_preprocessing_axis_changed)
        self.preprocessing_norm_l1.toggled.connect(
            self.on_preprocessing_norm_changed)
        self.preprocessing_norm_l2.toggled.connect(
            self.on_preprocessing_norm_changed)
        self.preprocessing_norm_max.toggled.connect(
            self.on_preprocessing_norm_changed)

        # event filter

        self.table_view.installEventFilter(self)