rework graph to include semester generation, fix bug where y-values were extracted wrong
This commit is contained in:
@@ -10,6 +10,7 @@ from PySide6.QtGui import QPainter, QPen, QColor
|
|||||||
from PySide6.QtCharts import QChart, QChartView, QLineSeries, QValueAxis, QCategoryAxis
|
from PySide6.QtCharts import QChart, QChartView, QLineSeries, QValueAxis, QCategoryAxis
|
||||||
|
|
||||||
from src import LOG_DIR
|
from src import LOG_DIR
|
||||||
|
from src.backend.semester import Semester
|
||||||
|
|
||||||
log = loguru.logger
|
log = loguru.logger
|
||||||
log.remove()
|
log.remove()
|
||||||
@@ -37,7 +38,7 @@ class DataQtGraph(QtWidgets.QWidget):
|
|||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
title: str,
|
title: str,
|
||||||
data: dict,
|
data: dict[str, Union[list[str], dict[str, list[int]]]],
|
||||||
generateMissing: bool,
|
generateMissing: bool,
|
||||||
y_label: str,
|
y_label: str,
|
||||||
x_rotation: int = 90,
|
x_rotation: int = 90,
|
||||||
@@ -53,16 +54,46 @@ class DataQtGraph(QtWidgets.QWidget):
|
|||||||
|
|
||||||
lst = []
|
lst = []
|
||||||
if generateMissing:
|
if generateMissing:
|
||||||
|
s_start = Semester.from_string(data["x"][0])
|
||||||
|
s_end = Semester.from_string(data["x"][-1])
|
||||||
|
# generate all semesters from start to end
|
||||||
|
missing_semesters = Semester.generate_missing(s_start, s_end)
|
||||||
x_data = data["x"]
|
x_data = data["x"]
|
||||||
y_data = data["y"]
|
y_data = data["y"]
|
||||||
if not isinstance(y_data, list):
|
if not isinstance(y_data, list):
|
||||||
for key in y_data:
|
for key in y_data:
|
||||||
data = {"x": x_data, "y": y_data[key]}
|
data = {"x": [], "y": []}
|
||||||
data = self.generateMissingSemesters(data)
|
|
||||||
data["y-label"] = key
|
data["y-label"] = key
|
||||||
|
for semester in missing_semesters:
|
||||||
|
if semester not in x_data:
|
||||||
|
data["x"].append(semester)
|
||||||
|
data["y"].append(0)
|
||||||
|
data["x"].append(semester)
|
||||||
|
# get the index of the semester in x_data
|
||||||
|
if semester in x_data:
|
||||||
|
index = x_data.index(semester)
|
||||||
|
print("index:", index)
|
||||||
|
print(key, y_data[key])
|
||||||
|
data["y"].append(y_data[key][index])
|
||||||
lst.append(data)
|
lst.append(data)
|
||||||
|
# for key in y_data:
|
||||||
|
# data = {"x": x_data, "y": y_data[key]}
|
||||||
|
# data = self.generateMissingSemesters(data)
|
||||||
|
# data["y-label"] = key
|
||||||
else:
|
else:
|
||||||
data = self.generateMissingSemesters(data)
|
# data = self.generateMissingSemesters(data)
|
||||||
|
data = {"x": [], "y": []}
|
||||||
|
for semester in missing_semesters:
|
||||||
|
# if semester not in x_data, set y to 0
|
||||||
|
if semester not in x_data:
|
||||||
|
data["x"].append(semester)
|
||||||
|
data["y"].append(0)
|
||||||
|
data["x"].append(semester)
|
||||||
|
# get the index of the semester in x_data
|
||||||
|
if semester in x_data:
|
||||||
|
index = x_data.index(semester)
|
||||||
|
data["y"].append(y_data[index])
|
||||||
|
data["y-label"] = y_label
|
||||||
lst.append(data)
|
lst.append(data)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@@ -76,9 +107,6 @@ class DataQtGraph(QtWidgets.QWidget):
|
|||||||
else:
|
else:
|
||||||
lst.append(data)
|
lst.append(data)
|
||||||
x_data = lst[0]["x"] #
|
x_data = lst[0]["x"] #
|
||||||
xdict = dict(enumerate(x_data))
|
|
||||||
|
|
||||||
print("xdict:", xdict)
|
|
||||||
|
|
||||||
self.chart.createDefaultAxes()
|
self.chart.createDefaultAxes()
|
||||||
for entry in lst:
|
for entry in lst:
|
||||||
@@ -88,6 +116,16 @@ class DataQtGraph(QtWidgets.QWidget):
|
|||||||
#
|
#
|
||||||
entryseries.append(entry["x"].index(x_val), y_val)
|
entryseries.append(entry["x"].index(x_val), y_val)
|
||||||
entryseries.setName(entry["y-label"] if "y-label" in entry else y_label)
|
entryseries.setName(entry["y-label"] if "y-label" in entry else y_label)
|
||||||
|
entryseries.setPen(
|
||||||
|
QPen(
|
||||||
|
QColor(
|
||||||
|
random.randint(0, 255),
|
||||||
|
random.randint(0, 255),
|
||||||
|
random.randint(0, 255),
|
||||||
|
),
|
||||||
|
2,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
self.chart.addSeries(entryseries)
|
self.chart.addSeries(entryseries)
|
||||||
|
|
||||||
@@ -106,7 +144,7 @@ class DataQtGraph(QtWidgets.QWidget):
|
|||||||
# str()
|
# str()
|
||||||
# )
|
# )
|
||||||
self.chart.legend().setVisible(True)
|
self.chart.legend().setVisible(True)
|
||||||
self.chart.legend().setAlignment(QtCore.Qt.AlignmentFlag.AlignBottom)
|
self.chart.legend().setAlignment(QtCore.Qt.AlignmentFlag.AlignTop)
|
||||||
# set legend labels
|
# set legend labels
|
||||||
|
|
||||||
self.chart.setAxisY(QValueAxis(self.chart), entryseries)
|
self.chart.setAxisY(QValueAxis(self.chart), entryseries)
|
||||||
|
|||||||
Reference in New Issue
Block a user