Skip to content

Commit 354e590

Browse files
committed
ENH: implement pre-renderer transforms (nus)
1 parent 4e60dc3 commit 354e590

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

data_prototype/wrappers.py

+18-5
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ class ProxyWrapper:
55
_privtized_methods = ()
66
_wrapped_class = None
77
_wrapped_instance = None
8+
data = None
89

910
def draw(self, renderer):
1011
raise NotImplementedError
@@ -22,18 +23,30 @@ def __setattr__(self, key, value):
2223
else:
2324
super().__setattr__(key, value)
2425

26+
def _query_and_transform(self, renderer):
27+
ax = self._wrapped_instance.axes
28+
ax_bbox = ax.get_window_extent(renderer)
29+
return {
30+
# doing this here is nice because we can write it once, but we really want to
31+
# push this computation down a layer
32+
k: self.nus.get(k, lambda x: x)(v)
33+
for k, v in self.data.query([*ax.get_xlim(), *ax.get_ylim()], ax_bbox.size).items()
34+
}
35+
36+
def __init__(self, data, nus):
37+
self.data = data
38+
self.nus = nus or {}
39+
2540

2641
class LineWrapper(ProxyWrapper):
2742
_wrapped_class = _Line2D
2843
_privtized_methods = set(["set_xdata", "set_ydata", "set_data"])
2944

30-
def __init__(self, data, /, **kwargs):
45+
def __init__(self, data, nus=None, /, **kwargs):
46+
super().__init__(data, nus)
3147
self._wrapped_instance = self._wrapped_class([], [], **kwargs)
32-
self.data = data
3348

3449
def draw(self, renderer):
35-
ax = self._wrapped_instance.axes
36-
ax_bbox = ax.get_window_extent(renderer)
37-
data = self.data.query([*ax.get_xlim(), *ax.get_ylim()], ax_bbox.size)
50+
data = self._query_and_transform(renderer)
3851
self._wrapped_instance.set_data(data["x"], data["y"])
3952
return self._wrapped_instance.draw(renderer)

0 commit comments

Comments
 (0)