Skip to content

Commit b428368

Browse files
committed
Add helpers for common artist edges
1 parent 2d102ac commit b428368

File tree

2 files changed

+41
-26
lines changed

2 files changed

+41
-26
lines changed

Diff for: data_prototype/conversion_edge.py

+33-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from typing import Any
88
import numpy as np
99

10-
from data_prototype.description import Desc, desc_like
10+
from data_prototype.description import Desc, desc_like, ShapeSpec
1111

1212
from matplotlib.transforms import Transform
1313

@@ -112,6 +112,17 @@ def from_default_value(
112112
) -> "DefaultEdge":
113113
return cls(name, {}, {key: output}, weight, invertable=False, value=value)
114114

115+
@classmethod
116+
def from_rc(
117+
cls, rc_name: str, key: str | None = None, coordinates: str = "display"
118+
):
119+
from matplotlib import rcParams
120+
121+
if key is None:
122+
key = rc_name.split(".")[-1]
123+
scalar = Desc((), coordinates)
124+
return cls.from_default_value(f"{rc_name}_rc", key, scalar, rcParams[rc_name])
125+
115126
def evaluate(self, input: dict[str, Any]) -> dict[str, Any]:
116127
return {k: self.value for k in self.output}
117128

@@ -428,3 +439,24 @@ def cache_key(self):
428439
import uuid
429440

430441
return str(uuid.uuid4())
442+
443+
def coord_and_default(
444+
key: str,
445+
shape: ShapeSpec = (),
446+
coordinates: str = "display",
447+
default_value: Any = None,
448+
default_rc: str | None = None,
449+
):
450+
if default_rc is not None:
451+
if default_value is not None:
452+
raise ValueError(
453+
"Only one of 'default_value' and 'default_rc' may be specified"
454+
)
455+
def_edge = DefaultEdge.from_rc(default_rc, key, coordinates)
456+
else:
457+
scalar = Desc((), coordinates)
458+
def_edge = DefaultEdge.from_default_value(
459+
f"{key}_def", key, scalar, default_value
460+
)
461+
coord_edge = CoordinateEdge.from_coords(key, {key: Desc(shape)}, coordinates)
462+
return coord_edge, def_edge

Diff for: data_prototype/text.py

+8-25
Original file line numberDiff line numberDiff line change
@@ -4,41 +4,24 @@
44

55
from .artist import Artist
66
from .description import Desc
7-
from .conversion_edge import Graph, CoordinateEdge, DefaultEdge
7+
from .conversion_edge import Graph, CoordinateEdge, coord_and_default
88

99

1010
class Text(Artist):
1111
def __init__(self, container, edges=None, **kwargs):
1212
super().__init__(container, edges, **kwargs)
1313

14-
scalar = Desc((), "display")
15-
1614
edges = [
1715
CoordinateEdge.from_coords(
1816
"xycoords", {"x": Desc((), "auto"), "y": Desc((), "auto")}, "data"
1917
),
20-
CoordinateEdge.from_coords("text", {"text": Desc(())}, "display"),
21-
CoordinateEdge.from_coords("color", {"color": Desc(())}, "display"),
22-
CoordinateEdge.from_coords("alpha", {"alpha": Desc(())}, "display"),
23-
CoordinateEdge.from_coords(
24-
"fontproperties", {"fontproperties": Desc(())}, "display"
25-
),
26-
CoordinateEdge.from_coords("usetex", {"usetex": Desc(())}, "display"),
27-
CoordinateEdge.from_coords("rotation", {"rotation": Desc(())}, "display"),
28-
CoordinateEdge.from_coords(
29-
"antialiased", {"antialiased": Desc(())}, "display"
30-
),
31-
DefaultEdge.from_default_value("text_def", "text", scalar, ""),
32-
DefaultEdge.from_default_value("color_def", "color", scalar, "k"),
33-
DefaultEdge.from_default_value("alpha_def", "alpha", scalar, 1),
34-
DefaultEdge.from_default_value(
35-
"fontproperties_def", "fontproperties", scalar, FontProperties()
36-
),
37-
DefaultEdge.from_default_value("usetex_def", "usetex", scalar, False),
38-
DefaultEdge.from_default_value("rotation_def", "rotation", scalar, 0),
39-
DefaultEdge.from_default_value(
40-
"antialiased_def", "antialiased", scalar, False
41-
),
18+
*coord_and_default("text", default_value=""),
19+
*coord_and_default("color", default_rc="text.color"),
20+
*coord_and_default("alpha", default_value=1),
21+
*coord_and_default("fontproperties", default_value=FontProperties()),
22+
*coord_and_default("usetex", default_rc="text.usetex"),
23+
*coord_and_default("rotation", default_value=0),
24+
*coord_and_default("antialiased", default_rc="text.antialiased"),
4225
]
4326

4427
self._graph = self._graph + Graph(edges)

0 commit comments

Comments
 (0)