Skip to content

update units.ConversionInterface to have to_numeric and from_numeric #16922

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions doc/api/artist_api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,9 @@ Units
:toctree: _as_gen
:nosignatures:

Artist.convert_x_to_numeric
Artist.convert_xunits
Artist.convert_y_to_numeric
Artist.convert_yunits
Artist.have_units

Expand Down
2 changes: 2 additions & 0 deletions doc/api/axes_api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,9 @@ Units
:template: autosummary.rst
:nosignatures:

Axes.convert_x_to_numeric
Axes.convert_xunits
Axes.convert_y_to_numeric
Axes.convert_yunits
Axes.have_units

Expand Down
18 changes: 18 additions & 0 deletions doc/api/axis_api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,8 @@ Units
:template: autosummary.rst
:nosignatures:

Axis.convert_from_numeric
Axis.convert_to_numeric
Axis.convert_units
Axis.set_units
Axis.get_units
Expand Down Expand Up @@ -330,6 +332,8 @@ XAxis
XAxis.OFFSETTEXTPAD
XAxis.axis_date
XAxis.cla
XAxis.convert_from_numeric
XAxis.convert_to_numeric
XAxis.convert_units
XAxis.get_data_interval
XAxis.get_gridlines
Expand Down Expand Up @@ -395,6 +399,8 @@ YAxis
YAxis.OFFSETTEXTPAD
YAxis.axis_date
YAxis.cla
YAxis.convert_from_numeric
YAxis.convert_to_numeric
YAxis.convert_units
YAxis.get_data_interval
YAxis.get_gridlines
Expand Down Expand Up @@ -464,7 +470,9 @@ Ticks
Tick.add_callback
Tick.axes
Tick.contains
Tick.convert_x_to_numeric
Tick.convert_xunits
Tick.convert_y_to_numeric
Tick.convert_yunits
Tick.draw
Tick.findobj
Expand Down Expand Up @@ -529,7 +537,9 @@ Ticks
XTick.add_callback
XTick.axes
XTick.contains
XTick.convert_x_to_numeric
XTick.convert_xunits
XTick.convert_y_to_numeric
XTick.convert_yunits
XTick.draw
XTick.findobj
Expand Down Expand Up @@ -594,7 +604,9 @@ Ticks
YTick.add_callback
YTick.axes
YTick.contains
YTick.convert_x_to_numeric
YTick.convert_xunits
YTick.convert_y_to_numeric
YTick.convert_yunits
YTick.draw
YTick.findobj
Expand Down Expand Up @@ -669,7 +681,9 @@ Axis
Axis.add_callback
Axis.axes
Axis.contains
Axis.convert_x_to_numeric
Axis.convert_xunits
Axis.convert_y_to_numeric
Axis.convert_yunits
Axis.draw
Axis.findobj
Expand Down Expand Up @@ -734,7 +748,9 @@ Axis
XAxis.add_callback
XAxis.axes
XAxis.contains
XAxis.convert_x_to_numeric
XAxis.convert_xunits
XAxis.convert_y_to_numeric
XAxis.convert_yunits
XAxis.draw
XAxis.findobj
Expand Down Expand Up @@ -799,7 +815,9 @@ Axis
YAxis.add_callback
YAxis.axes
YAxis.contains
YAxis.convert_x_to_numeric
YAxis.convert_xunits
YAxis.convert_y_to_numeric
YAxis.convert_yunits
YAxis.draw
YAxis.findobj
Expand Down
14 changes: 7 additions & 7 deletions examples/units/basic_units.py
Original file line number Diff line number Diff line change
Expand Up @@ -313,8 +313,8 @@ def rad_fn(x, pos=None):


class BasicUnitConverter(units.ConversionInterface):
@staticmethod
def axisinfo(unit, axis):
@classmethod
def axisinfo(cls, unit, axis):
"""Return AxisInfo instance for x and unit."""

if unit == radians:
Expand All @@ -336,9 +336,9 @@ def axisinfo(unit, axis):
return units.AxisInfo(label=unit.unit.fullname)
return None

@staticmethod
def convert(val, unit, axis):
if units.ConversionInterface.is_numlike(val):
@classmethod
def to_numeric(cls, val, unit, axis):
if cls.is_numlike(val):
return val
if np.iterable(val):
if isinstance(val, np.ma.MaskedArray):
Expand All @@ -358,8 +358,8 @@ def convert(val, unit, axis):
else:
return val.convert_to(unit).get_value()

@staticmethod
def default_units(x, axis):
@classmethod
def default_units(cls, x, axis):
"""Return the default unit for x or None."""
if np.iterable(x):
for thisx in x:
Expand Down
14 changes: 7 additions & 7 deletions examples/units/evans_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ def value(self, unit):


class FooConverter(units.ConversionInterface):
@staticmethod
def axisinfo(unit, axis):
@classmethod
def axisinfo(cls, unit, axis):
"""Return the Foo AxisInfo."""
if unit == 1.0 or unit == 2.0:
return units.AxisInfo(
Expand All @@ -41,23 +41,23 @@ def axisinfo(unit, axis):
else:
return None

@staticmethod
def convert(obj, unit, axis):
@classmethod
def to_numeric(cls, obj, unit, axis):
"""
Convert *obj* using *unit*.

If *obj* is a sequence, return the converted sequence.
"""
if units.ConversionInterface.is_numlike(obj):
if cls.is_numlike(obj):
return obj

if np.iterable(obj):
return [o.value(unit) for o in obj]
else:
return obj.value(unit)

@staticmethod
def default_units(x, axis):
@classmethod
def default_units(cls, x, axis):
"""Return the default unit for *x* or None."""
if np.iterable(x):
for thisx in x:
Expand Down
16 changes: 12 additions & 4 deletions lib/matplotlib/artist.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ def have_units(self):
ax = self.axes
return ax and any(axis.have_units() for axis in ax._get_axis_list())

def convert_xunits(self, x):
def convert_x_to_numeric(self, x):
"""
Convert *x* using the unit type of the xaxis.

Expand All @@ -174,9 +174,13 @@ def convert_xunits(self, x):
ax = getattr(self, 'axes', None)
if ax is None or ax.xaxis is None:
return x
return ax.xaxis.convert_units(x)
return ax.xaxis.convert_to_numeric(x)

def convert_yunits(self, y):
@cbook.deprecated("3.3", pending=True, alternative="convert_x_to_numeric")
def convert_xunits(self, x):
return self.convert_x_to_numeric(x)

def convert_y_to_numeric(self, y):
"""
Convert *y* using the unit type of the yaxis.

Expand All @@ -186,7 +190,11 @@ def convert_yunits(self, y):
ax = getattr(self, 'axes', None)
if ax is None or ax.yaxis is None:
return y
return ax.yaxis.convert_units(y)
return ax.yaxis.convert_to_numeric(y)

@cbook.deprecated("3.3", pending=True, alternative="convert_y_to_numeric")
def convert_yunits(self, y):
return self.convert_y_to_numeric(y)

@property
def axes(self):
Expand Down
Loading