mirror of https://gitlab.com/pamhyr/pamhyr2
LC: Update plot with PmahyrPlot new features.
parent
065e1f063f
commit
2111307965
|
|
@ -27,8 +27,6 @@ from PyQt5.QtCore import (
|
||||||
QCoreApplication
|
QCoreApplication
|
||||||
)
|
)
|
||||||
|
|
||||||
from View.BoundaryCondition.Edit.translate import BCETranslate
|
|
||||||
|
|
||||||
_translate = QCoreApplication.translate
|
_translate = QCoreApplication.translate
|
||||||
|
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
|
|
@ -55,6 +53,8 @@ class Plot(PamhyrPlot):
|
||||||
self._mode = mode
|
self._mode = mode
|
||||||
self._isometric_axis = False
|
self._isometric_axis = False
|
||||||
|
|
||||||
|
self._auto_relim_update = True
|
||||||
|
self._autoscale_update = True
|
||||||
|
|
||||||
def custom_ticks(self):
|
def custom_ticks(self):
|
||||||
if self.data.header[0] != "time":
|
if self.data.header[0] != "time":
|
||||||
|
|
@ -94,7 +94,6 @@ class Plot(PamhyrPlot):
|
||||||
return
|
return
|
||||||
|
|
||||||
self.update_data()
|
self.update_data()
|
||||||
self.custom_ticks()
|
|
||||||
|
|
||||||
self.update_idle()
|
self.update_idle()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@
|
||||||
|
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from tools import timer, trace
|
from tools import timer, trace
|
||||||
|
|
@ -25,14 +27,14 @@ from PyQt5.QtCore import (
|
||||||
QCoreApplication
|
QCoreApplication
|
||||||
)
|
)
|
||||||
|
|
||||||
from View.LateralContribution.Edit.translate import *
|
|
||||||
|
|
||||||
_translate = QCoreApplication.translate
|
_translate = QCoreApplication.translate
|
||||||
|
|
||||||
|
logger = logging.getLogger()
|
||||||
|
|
||||||
|
|
||||||
class Plot(PamhyrPlot):
|
class Plot(PamhyrPlot):
|
||||||
def __init__(self, mode="time", data=None,
|
def __init__(self, mode="time", data=None,
|
||||||
canvas=None, trad=None, toolbar=None,
|
trad=None, canvas=None, toolbar=None,
|
||||||
parent=None):
|
parent=None):
|
||||||
super(Plot, self).__init__(
|
super(Plot, self).__init__(
|
||||||
canvas=canvas,
|
canvas=canvas,
|
||||||
|
|
@ -43,99 +45,60 @@ class Plot(PamhyrPlot):
|
||||||
)
|
)
|
||||||
|
|
||||||
self._table_headers = self._trad.get_dict("table_headers")
|
self._table_headers = self._trad.get_dict("table_headers")
|
||||||
|
|
||||||
|
header = self.data.header
|
||||||
|
self.label_x = self._table_headers[header[0]]
|
||||||
|
self.label_y = self._table_headers[header[1]]
|
||||||
|
|
||||||
self._mode = mode
|
self._mode = mode
|
||||||
|
self._isometric_axis = False
|
||||||
|
|
||||||
|
self._auto_relim_update = True
|
||||||
|
self._autoscale_update = True
|
||||||
|
|
||||||
def custom_ticks(self):
|
def custom_ticks(self):
|
||||||
if self.data.header[0] != "time":
|
if self.data.header[0] != "time":
|
||||||
return
|
return
|
||||||
|
|
||||||
t0 = datetime.fromtimestamp(0)
|
self.set_ticks_time_formater()
|
||||||
nb = len(self.data.data)
|
|
||||||
mod = int(nb / 5)
|
|
||||||
mod = mod if mod > 0 else nb
|
|
||||||
|
|
||||||
fx = list(
|
|
||||||
map(
|
|
||||||
lambda x: x[1],
|
|
||||||
filter(
|
|
||||||
lambda x: x[0] % mod == 0,
|
|
||||||
enumerate(self.data.data)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
xx = list(map(lambda v: v[0], fx))
|
|
||||||
if self._mode == "time":
|
|
||||||
xt = list(
|
|
||||||
map(
|
|
||||||
lambda v: str(
|
|
||||||
datetime.fromtimestamp(v[0]) - t0
|
|
||||||
).split(",")[0]
|
|
||||||
.replace("days", _translate("LateralContribution", "days"))
|
|
||||||
.replace("day", _translate("LateralContribution", "day")),
|
|
||||||
fx
|
|
||||||
)
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
xt = list(
|
|
||||||
map(
|
|
||||||
lambda v: str(datetime.fromtimestamp(v[0]).date()),
|
|
||||||
fx
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
self.canvas.axes.set_xticks(ticks=xx, labels=xt, rotation=45)
|
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def draw(self):
|
def draw(self):
|
||||||
self.canvas.axes.cla()
|
self.init_axes()
|
||||||
self.canvas.axes.grid(color='grey', linestyle='--', linewidth=0.5)
|
|
||||||
|
|
||||||
if len(self.data) == 0:
|
if len(self.data) == 0:
|
||||||
self._init = False
|
self._init = False
|
||||||
return
|
return
|
||||||
|
|
||||||
|
self.draw_data()
|
||||||
|
self.custom_ticks()
|
||||||
|
|
||||||
|
self.idle()
|
||||||
|
self._init = True
|
||||||
|
|
||||||
|
def draw_data(self):
|
||||||
# Plot data
|
# Plot data
|
||||||
x = list(map(lambda v: v[0], self.data.data))
|
x = list(map(lambda v: v[0], self.data.data))
|
||||||
y = list(map(lambda v: v[1], self.data.data))
|
y = list(map(lambda v: v[1], self.data.data))
|
||||||
|
|
||||||
self._line, = self.canvas.axes.plot(
|
self._line, = self.canvas.axes.plot(
|
||||||
x, y,
|
x, y,
|
||||||
color='r', lw=1.,
|
color=self.color_plot,
|
||||||
markersize=5, marker='+',
|
**self.plot_default_kargs
|
||||||
picker=30,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
self.custom_ticks()
|
|
||||||
|
|
||||||
# Plot label
|
|
||||||
header = self.data.header
|
|
||||||
self.canvas.axes.set_xlabel(
|
|
||||||
self._table_headers[header[0]], color='black', fontsize=10
|
|
||||||
)
|
|
||||||
self.canvas.axes.set_ylabel(
|
|
||||||
self._table_headers[header[1]], color='black', fontsize=10
|
|
||||||
)
|
|
||||||
|
|
||||||
self.canvas.axes.autoscale_view(True, True, True)
|
|
||||||
self.canvas.figure.tight_layout()
|
|
||||||
self.canvas.figure.canvas.draw_idle()
|
|
||||||
# self.toolbar.update()
|
|
||||||
|
|
||||||
self._init = True
|
|
||||||
|
|
||||||
@timer
|
@timer
|
||||||
def update(self, ind=None):
|
def update(self, ind=None):
|
||||||
if not self._init:
|
if not self._init:
|
||||||
self.draw()
|
self.draw()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
self.update_data()
|
||||||
|
|
||||||
|
self.update_idle()
|
||||||
|
|
||||||
|
def update_data(self):
|
||||||
x = list(map(lambda v: v[0], self.data.data))
|
x = list(map(lambda v: v[0], self.data.data))
|
||||||
y = list(map(lambda v: v[1], self.data.data))
|
y = list(map(lambda v: v[1], self.data.data))
|
||||||
|
|
||||||
self._line.set_data(x, y)
|
self._line.set_data(x, y)
|
||||||
|
|
||||||
self.custom_ticks()
|
|
||||||
|
|
||||||
self.canvas.axes.relim()
|
|
||||||
self.canvas.axes.autoscale()
|
|
||||||
self.canvas.figure.tight_layout()
|
|
||||||
self.canvas.figure.canvas.draw_idle()
|
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,11 @@ import logging
|
||||||
import traceback
|
import traceback
|
||||||
from datetime import date, time, datetime, timedelta
|
from datetime import date, time, datetime, timedelta
|
||||||
|
|
||||||
from tools import trace, timer
|
from tools import (
|
||||||
|
trace, timer,
|
||||||
|
timestamp_to_old_pamhyr_date,
|
||||||
|
old_pamhyr_date_to_timestamp
|
||||||
|
)
|
||||||
|
|
||||||
from View.Tools.PamhyrTable import PamhyrTableModel
|
from View.Tools.PamhyrTable import PamhyrTableModel
|
||||||
|
|
||||||
|
|
@ -70,9 +74,7 @@ class TableModel(PamhyrTableModel):
|
||||||
value = f"{v:.4f}"
|
value = f"{v:.4f}"
|
||||||
elif self._data.header[column] == "time":
|
elif self._data.header[column] == "time":
|
||||||
if self._opt_data == "time":
|
if self._opt_data == "time":
|
||||||
t0 = datetime.fromtimestamp(0)
|
value = timestamp_to_old_pamhyr_date(int(v))
|
||||||
t = datetime.fromtimestamp(v)
|
|
||||||
value = str(t - t0)
|
|
||||||
else:
|
else:
|
||||||
value = str(datetime.fromtimestamp(v))
|
value = str(datetime.fromtimestamp(v))
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
|
|
@ -199,7 +199,8 @@ class LateralContributionWindow(PamhyrWindow):
|
||||||
data=data,
|
data=data,
|
||||||
toolbar=None,
|
toolbar=None,
|
||||||
)
|
)
|
||||||
self.plot.draw(highlight=highlight)
|
self.plot.highlight = highlight
|
||||||
|
self.plot.draw()
|
||||||
|
|
||||||
def add(self):
|
def add(self):
|
||||||
tab = self.current_tab()
|
tab = self.current_tab()
|
||||||
|
|
|
||||||
|
|
@ -251,7 +251,7 @@ def old_pamhyr_date_to_timestamp(date: str):
|
||||||
return ts
|
return ts
|
||||||
|
|
||||||
|
|
||||||
def timestamp_to_old_pamhyr_date(time:int):
|
def timestamp_to_old_pamhyr_date(time: int):
|
||||||
t0 = datetime.fromtimestamp(0)
|
t0 = datetime.fromtimestamp(0)
|
||||||
t = datetime.fromtimestamp(time)
|
t = datetime.fromtimestamp(time)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue