Столбчатая диаграмма Py Qt 5

Необходимо отфильтровать данные и построить столбчатую диаграмму. Есть несколько типов оборудования, на каждом из которых пользователь может совершать определенные операции (например, станок №1, за которым работают Вася и Петя, которые могут сверлить отверстия или резать материал). На вход подаются данные следующего вида:

  1. data_1, data_2 - начальная и конечные даты фильтрации
  2. Список пользователей users
  3. Список оборудования для фильтрации machines

Нужно построить данные по операциям в виде столбчатой диаграммы примерно такого вида, где каждый столбик соответствует определенной машине (в примере с Васей и Петей нужно получить изображение периодов времени, например, за месяц, в которые выполнялось резание или сверление за станком №1). введите сюда описание изображения

При кликании на столбик появлялась бы новая диаграмма, имеющая такую же структуру, но уже для каждого пользователя отображались бы операции относительно времени (каждый столбик соотв. определенному пользователю). В примере с Васей и Петей было бы два столбика, каждый из которых показывал периоды времени, в которые производилось сверление или резание Васей (столбик №1) или Петей (столбик №2). Я пытался использовать QPercentBarSeries, но не очень понятно, как делать "отступы" между операциями белым цветом, т.е. как создать помимо "Operation 1", "Operation 2" еще и " No operation" и задать для него белый цвет. Так же я искал как при нажатии на столбик вывести другой виджет, но не смог найти подходящий решений. Вот что я пытался использовать:

from PyQt5.QtWidgets import QApplication, QMainWindow
import sys
from PyQt5.QtChart import QChart, QChartView, QBarSet, QPercentBarSeries, QBarCategoryAxis
from PyQt5.QtGui import QPainter
from PyQt5.QtCore import Qt



class Window(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("PyQt BarChart")
        self.setGeometry(100,100, 680,500)
        self.show()
        self.create_bar()




    def create_bar(self):
        #The QBarSet class represents a set of bars in the bar chart.
         # It groups several bars into a bar set

        set0 = QBarSet("Operation1")
        set1 = QBarSet("Operation2")
        set2 = QBarSet("Operation3")
        set3 = QBarSet("Operation4")
        set4 = QBarSet("Operation5")

        set0 << 1 << 2 << 3 << 4 << 5 << 6
        set1 << 5 << 0 << 0 << 4 << 0 << 7
        set2 << 3 << 5 << 8 << 13 << 8 << 5
        set3 << 5 << 6 << 7 << 3 << 4 << 5
        set4 << 9 << 7 << 5 << 3 << 1 << 2

        series = QPercentBarSeries()
        series.append(set0)
        series.append(set1)
        series.append(set2)
        series.append(set3)
        series.append(set4)

        chart = QChart()
        chart.addSeries(series)
        chart.setTitle("Percent Example")
        chart.setAnimationOptions(QChart.SeriesAnimations)

        categories = ["Machine1", "Machine2", "Machine3", "Machine4", "Machine5", "Machine6"]
        axis = QBarCategoryAxis()
        axis.append(categories)
        chart.createDefaultAxes()
        chart.setAxisX(axis, series)

        chart.legend().setVisible(True)
        chart.legend().setAlignment(Qt.AlignBottom)

        chartView = QChartView(chart)
        chartView.setRenderHint(QPainter.Antialiasing)

        self.setCentralWidget(chartView)





App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())

Ответы (0 шт):