class LegendItemTitle(QGraphicsWidget): """Legend item title - the text displayed in the legend. This should only really be used in conjunction with ˙LegendItem˙. Parameters ---------- text : str parent : QGraphicsItem font : QFont This """ _size_hint = QSizeF(100, 10) def __init__(self, text, parent, font): super().__init__(parent) self.__text = QGraphicsTextItem(text.title()) self.__text.setParentItem(self) self.__text.setFont(font) self._size_hint = QSizeF(self.__text.boundingRect().size()) def sizeHint(self, size_hint, size_constraint=None, *args, **kwargs): return self._size_hint
class LegendItemTitle(QGraphicsWidget): """Legend item title - the text displayed in the legend. This should only really be used in conjunction with ˙LegendItem˙. Parameters ---------- text : str parent : QGraphicsItem font : QFont This """ _size_hint = QSizeF(100, 10) def __init__(self, text, parent, font): super().__init__(parent) self.__text = QGraphicsTextItem(text.title()) self.__text.setParentItem(self) self.__text.setFont(font) self._size_hint = QSizeF(self.__text.boundingRect().size()) def sizeHint(self, size_hint, size_constraint=None, *args, **kwargs): return self._size_hint
def __init__(self, name, values, scale, name_offset, offset, get_points, title, get_probabilities): super().__init__() self.scale = scale self.offset = offset self.get_points = get_points self.min_val = min(values) self.max_val = max(values) # leading labels font = name.document().defaultFont() font.setWeight(QFont.Bold) name_total = QGraphicsTextItem("Total") name_total.setFont(font) name_total.setPos(name_offset, -25) name_total.setParentItem(self) name.setFont(font) name.setPos(name_offset, 10) name.setParentItem(self) # prediction marker self.dot = ProbabilitiesDotItem( self.dot_r, scale, offset, values[0], values[-1], title, get_probabilities) self.dot.setPos(0, (- self.dot_r + self.y_diff) / 2) self.dot.setParentItem(self) # two lines t_line = QGraphicsLineItem(self.min_val * scale + offset, 0, self.max_val * scale + offset, 0) p_line = QGraphicsLineItem(self.min_val * scale + offset, self.y_diff, self.max_val * scale + offset, self.y_diff) t_line.setParentItem(self) p_line.setParentItem(self) # ticks and labels old_x_tick = values[0] * scale + offset for i, value in enumerate(values[1:]): x_tick = value * scale + offset x = x_tick - (x_tick - old_x_tick) / 2 half_tick = QGraphicsLineItem(x, - self.tick_height / 2, x, 0) half_tick.setParentItem(self) old_x_tick = x_tick if i == len(values) - 2: break text = QGraphicsTextItem(str(abs(value) if value == -0 else value)) x_text = value * scale - text.boundingRect().width() / 2 + offset y_text = - text.boundingRect().height() - self.dot_r * 0.7 text.setPos(x_text, y_text) text.setParentItem(self) tick = QGraphicsLineItem(x_tick, -self.tick_height, x_tick, 0) tick.setParentItem(self) self.prob_items = [ (i / 10, QGraphicsTextItem(" " + str(i * 10) + " "), QGraphicsLineItem(0, 0, 0, 0)) for i in range(1, 10)]