dev: добавил возможность отражения графика по оси абсцисс
This commit is contained in:
parent
16416d6011
commit
f8c07e18fc
@ -55,5 +55,8 @@
|
|||||||
],
|
],
|
||||||
"UML_time_scaler": [
|
"UML_time_scaler": [
|
||||||
1000.0
|
1000.0
|
||||||
|
],
|
||||||
|
"Range ME, mm": [
|
||||||
|
250
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -41,8 +41,9 @@ class PassportFormer(BasePointPassportFormer):
|
|||||||
return []
|
return []
|
||||||
|
|
||||||
system_settings = {key: value[0] for key, value in self._params[1].items()}
|
system_settings = {key: value[0] for key, value in self._params[1].items()}
|
||||||
|
Range = system_settings["Range ME, mm"]
|
||||||
tesla_time = sum(self._params[0].get("Tesla summary time", []))
|
tesla_time = sum(self._params[0].get("Tesla summary time", []))
|
||||||
|
useful_data = {"tesla_time": tesla_time, "range_ME": Range}
|
||||||
|
|
||||||
points_pocket = []
|
points_pocket = []
|
||||||
|
|
||||||
@ -59,7 +60,7 @@ class PassportFormer(BasePointPassportFormer):
|
|||||||
}
|
}
|
||||||
params_list = [operator_settings, system_settings]
|
params_list = [operator_settings, system_settings]
|
||||||
cache_key = self._generate_cache_key(params_list)
|
cache_key = self._generate_cache_key(params_list)
|
||||||
if cache_key in self._ideal_data_cashe:
|
if cache_key in self._ideal_data_cashe :
|
||||||
ideal_data = self._ideal_data_cashe[cache_key]
|
ideal_data = self._ideal_data_cashe[cache_key]
|
||||||
print(f"Cache hit")
|
print(f"Cache hit")
|
||||||
else:
|
else:
|
||||||
@ -71,7 +72,7 @@ class PassportFormer(BasePointPassportFormer):
|
|||||||
point_events = {key: [value[0][i], value[1][i]] for key, value in events.items()}
|
point_events = {key: [value[0][i], value[1][i]] for key, value in events.items()}
|
||||||
|
|
||||||
points_pocket.append([point_timeframe, ideal_data, point_events])
|
points_pocket.append([point_timeframe, ideal_data, point_events])
|
||||||
return dataframe, points_pocket, tesla_time
|
return dataframe, points_pocket, useful_data
|
||||||
|
|
||||||
def update_settings(self, params: list[dict, dict]):
|
def update_settings(self, params: list[dict, dict]):
|
||||||
self._params = params
|
self._params = params
|
||||||
Binary file not shown.
@ -1,5 +1,6 @@
|
|||||||
import pandas as pd
|
import pandas as pd
|
||||||
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel
|
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel
|
||||||
|
import copy
|
||||||
|
|
||||||
|
|
||||||
import pyqtgraph as pg
|
import pyqtgraph as pg
|
||||||
@ -192,15 +193,29 @@ class PlotWidget(BasePlotWidget):
|
|||||||
layout.addWidget(performance_label)
|
layout.addWidget(performance_label)
|
||||||
performance_label.update()
|
performance_label.update()
|
||||||
|
|
||||||
|
def _mirror_shift_data(self,
|
||||||
|
valid_str: str,
|
||||||
|
signals: list[dict],
|
||||||
|
dataframe: pd.DataFrame,
|
||||||
|
shift: float) -> pd.DataFrame:
|
||||||
|
keys = dataframe.keys()
|
||||||
|
for signal in signals:
|
||||||
|
if valid_str in signal["name"] and signal["name"] in keys:
|
||||||
|
dataframe[signal["name"]] = dataframe[signal["name"]].apply(lambda x: shift-x)
|
||||||
|
return dataframe
|
||||||
|
|
||||||
|
|
||||||
def _build_widget(self, data: list[Any]) -> QWidget:
|
def _build_widget(self, data: list[Any]) -> QWidget:
|
||||||
"""
|
"""
|
||||||
Собирает графический виджет для одного набора данных.
|
Собирает графический виджет для одного набора данных.
|
||||||
Параметр `data` предполагается списком: [dataframe, points_pocket, tesla_time].
|
Параметр `data` предполагается списком: [dataframe, points_pocket, useful_data].
|
||||||
"""
|
"""
|
||||||
widget = QWidget()
|
widget = QWidget()
|
||||||
layout = QVBoxLayout(widget)
|
layout = QVBoxLayout(widget)
|
||||||
|
|
||||||
dataframe, points_pocket, tesla_time = data
|
dataframe, points_pocket, useful_data = data
|
||||||
|
tesla_time = useful_data["tesla_time"]
|
||||||
|
range_ME = useful_data["range_ME"]
|
||||||
dataframe_headers = dataframe.columns.tolist()
|
dataframe_headers = dataframe.columns.tolist()
|
||||||
|
|
||||||
for widget_num, (channel, description) in enumerate(self._plt_channels.items()):
|
for widget_num, (channel, description) in enumerate(self._plt_channels.items()):
|
||||||
@ -210,11 +225,21 @@ class PlotWidget(BasePlotWidget):
|
|||||||
TWC_time = 0.0
|
TWC_time = 0.0
|
||||||
ideal_time = 0.0
|
ideal_time = 0.0
|
||||||
worst_perf = 2
|
worst_perf = 2
|
||||||
|
|
||||||
|
if settings["mirror ME"]:
|
||||||
|
dataframe = self._mirror_shift_data("ME", description["Real_signals"], dataframe, range_ME)
|
||||||
|
|
||||||
|
|
||||||
# Итерация по точкам
|
# Итерация по точкам
|
||||||
for cur_point, point_data in enumerate(points_pocket):
|
for cur_point, point_data in enumerate(points_pocket):
|
||||||
# point_data структура: [point_timeframe, ideal_data, point_events]
|
# point_data структура: [point_timeframe, ideal_data, point_events]
|
||||||
point_timeframe, ideal_data, point_events = point_data
|
point_timeframe, ideal_dat, point_events = point_data
|
||||||
|
ideal_data = copy.deepcopy(ideal_dat)
|
||||||
|
# Модифицируем данные для отображения гарфика
|
||||||
|
if settings["ideals"] and settings["mirror ME"]:
|
||||||
|
for stage in point_events.keys():
|
||||||
|
ideal_data[stage] = self._mirror_shift_data("ME", description["Ideal_signals"], ideal_data[stage], range_ME)
|
||||||
|
|
||||||
|
|
||||||
# Добавляем реальные стадии
|
# Добавляем реальные стадии
|
||||||
if settings["stages"]:
|
if settings["stages"]:
|
||||||
|
|||||||
Binary file not shown.
@ -111,7 +111,6 @@ class BasePlotWidget:
|
|||||||
mediator: Optional[BaseMediator] = None):
|
mediator: Optional[BaseMediator] = None):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self._mediator = mediator
|
self._mediator = mediator
|
||||||
|
|
||||||
|
|
||||||
self._stage_colors = {
|
self._stage_colors = {
|
||||||
"Closing": [220, 20, 60, 100], # Crimson
|
"Closing": [220, 20, 60, 100], # Crimson
|
||||||
@ -126,7 +125,8 @@ class BasePlotWidget:
|
|||||||
"zoom": False,
|
"zoom": False,
|
||||||
"stages": True,
|
"stages": True,
|
||||||
"performance": True,
|
"performance": True,
|
||||||
"ideals": True
|
"ideals": True,
|
||||||
|
"mirror ME": False
|
||||||
},
|
},
|
||||||
"Real_signals": [
|
"Real_signals": [
|
||||||
{
|
{
|
||||||
@ -154,7 +154,8 @@ class BasePlotWidget:
|
|||||||
"zoom": False,
|
"zoom": False,
|
||||||
"stages": True,
|
"stages": True,
|
||||||
"performance": False,
|
"performance": False,
|
||||||
"ideals": True
|
"ideals": True,
|
||||||
|
"mirror ME": True
|
||||||
},
|
},
|
||||||
"Real_signals": [
|
"Real_signals": [
|
||||||
{
|
{
|
||||||
@ -182,7 +183,8 @@ class BasePlotWidget:
|
|||||||
"zoom": False,
|
"zoom": False,
|
||||||
"stages": True,
|
"stages": True,
|
||||||
"performance": False,
|
"performance": False,
|
||||||
"ideals": True
|
"ideals": True,
|
||||||
|
"mirror ME": False
|
||||||
},
|
},
|
||||||
"Real_signals": [
|
"Real_signals": [
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user