Столбчатая диаграмма Py Qt 5
Необходимо отфильтровать данные и построить столбчатую диаграмму. Есть несколько типов оборудования, на каждом из которых пользователь может совершать определенные операции (например, станок №1, за которым работают Вася и Петя, которые могут сверлить отверстия или резать материал). На вход подаются данные следующего вида:
- data_1, data_2 - начальная и конечные даты фильтрации
- Список пользователей users
- Список оборудования для фильтрации 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_())