Skip to content

Commit 198d8d7

Browse files
committed
Refactor datetime axis support: replace DateTimeScaleDraw with QwtDateTimeScaleDraw and update related tests
1 parent d090192 commit 198d8d7

File tree

4 files changed

+13
-87
lines changed

4 files changed

+13
-87
lines changed

CHANGELOG.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
* This class provides a dialog for displaying synchronized plots.
3737
* This is a complementary class to `SyncPlotWindow`, providing a modal dialog interface for synchronized plotting.
3838
* Native datetime axis support:
39-
* Added `DateTimeScaleDraw` class in `plotpy.styles.scaledraw` for formatting axis labels as date/time strings
4039
* Added `BasePlot.set_axis_datetime()` method to easily configure an axis for datetime display
4140
* Added `BasePlot.set_axis_limits_from_datetime()` method to set axis limits using datetime objects directly
4241
* Supports customizable datetime format strings using Python's `strftime` format codes

plotpy/plot/base.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@
5353
PolygonMapItem,
5454
PolygonShape,
5555
)
56-
from plotpy.plot.scaledraw import DateTimeScaleDraw
5756
from plotpy.styles.axes import AxesParam, AxeStyleParam, AxisParam, ImageAxesParam
5857
from plotpy.styles.base import GridParam, ItemParameters
5958

@@ -532,7 +531,7 @@ def format_coordinate_value(self, value: float, axis_id: str | int) -> str:
532531
# Check if this axis is using datetime scale
533532
if self.get_axis_scale(axis_id) == "datetime":
534533
try:
535-
scale_draw: DateTimeScaleDraw = self.axisScaleDraw(axis_id)
534+
scale_draw: qwt.QwtDateTimeScaleDraw = self.axisScaleDraw(axis_id)
536535
dt = datetime.fromtimestamp(value)
537536
return dt.strftime(scale_draw.get_format())
538537
except (ValueError, OSError, OverflowError):
@@ -1149,7 +1148,7 @@ def set_axis_scale(self, axis_id: int, scale: str, autoscale: bool = True) -> No
11491148

11501149
if scale != self.get_axis_scale(axis_id):
11511150
if scale == "datetime":
1152-
self.setAxisScaleDraw(axis_id, DateTimeScaleDraw())
1151+
self.setAxisScaleDraw(axis_id, qwt.QwtDateTimeScaleDraw())
11531152
else:
11541153
self.setAxisScaleDraw(axis_id, qwt.QwtScaleDraw())
11551154

@@ -1210,10 +1209,18 @@ def set_axis_datetime(
12101209
>>> plot.set_axis_datetime("bottom", format="%Y-%m-%d", rotate=0)
12111210
"""
12121211
axis_id = self.get_axis_id(axis_id)
1213-
scale_draw = DateTimeScaleDraw(format=format, rotate=rotate, spacing=spacing)
1212+
scale_draw = qwt.QwtDateTimeScaleDraw(format=format, spacing=spacing)
12141213
self.setAxisScaleDraw(axis_id, scale_draw)
12151214
scale_engine = qwt.QwtDateTimeScaleEngine()
12161215
self.setAxisScaleEngine(axis_id, scale_engine)
1216+
if rotate != 0:
1217+
self.setAxisLabelRotation(axis_id, rotate)
1218+
if rotate < 0:
1219+
self.setAxisLabelAlignment(axis_id, QC.Qt.AlignLeft | QC.Qt.AlignBottom)
1220+
else:
1221+
self.setAxisLabelAlignment(
1222+
axis_id, QC.Qt.AlignRight | QC.Qt.AlignBottom
1223+
)
12171224
self.do_autoscale()
12181225

12191226
def set_axis_limits_from_datetime(

plotpy/plot/scaledraw.py

Lines changed: 0 additions & 80 deletions
This file was deleted.

plotpy/tests/unit/test_datetime_axis.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010
from datetime import datetime
1111

1212
import numpy as np
13+
import qwt
1314
from guidata.qthelpers import qt_app_context
1415

1516
from plotpy.builder import make
16-
from plotpy.plot.scaledraw import DateTimeScaleDraw
1717
from plotpy.tests import vistools as ptv
1818

1919

@@ -31,7 +31,7 @@ def test_datetime_axis():
3131
# Test 1: Set datetime axis with default format
3232
plot.set_axis_datetime("bottom")
3333
scale_draw = plot.axisScaleDraw(plot.xBottom)
34-
assert isinstance(scale_draw, DateTimeScaleDraw)
34+
assert isinstance(scale_draw, qwt.QwtDateTimeScaleDraw)
3535
assert scale_draw.get_format() == "%Y-%m-%d %H:%M:%S"
3636

3737
# Test 2: Set datetime axis with custom format (time only)

0 commit comments

Comments
 (0)