MTG/dunya-desktop

View on GitHub
dunyadesktop_app/widgets/histogram.py

Summary

Maintainability
A
0 mins
Test Coverage
import numpy

from PyQt5.QtWidgets import QDialog, QVBoxLayout
from PyQt5.QtCore import QSize
import pyqtgraph as pg

CURSOR_PEN = pg.mkPen((255, 40, 35, 150), cosmetic=True, width=3)


class HistogramDialog(QDialog):
    def __init__(self):
        super(HistogramDialog, self).__init__()
        self.setMinimumSize(QSize(500, 325))
        self.setContentsMargins(0, 0, 0, 0)

        self.hist_widget = pg.PlotWidget(self)
        l = QVBoxLayout(self)
        l.addWidget(self.hist_widget)
        l.setContentsMargins(0, 0, 0, 0)

    def plot_histogram(self, bins, vals):
        self.hist_widget.plot(bins, vals, fillLevel=0, brush=(0,0,255,150))
        self.max_val = numpy.max(vals)
        self.__set_plot()

    def __set_plot(self):
        self.hist_widget.setMouseEnabled(x=False, y=False)
        self.hist_widget.setMenuEnabled(False)

        self.hline_histogram = pg.ROI(pos=[0, 0], size=[0, self.max_val], angle=0,
                                      pen=CURSOR_PEN)
        self.hist_widget.addItem(self.hline_histogram)

    def update_histogram(self, pitch):
        self.hline_histogram.setPos(pitch, 0)