1
+ """
2
+ The frame parameter.
3
+ """
4
+
5
+ from dataclasses import dataclass
6
+ from typing import Any
7
+
8
+ from pygmt .alias import Alias
9
+ from pygmt .params .base import BaseParam
10
+
11
+
12
+ @dataclass (repr = False )
13
+ class Axes (BaseParam ):
14
+ """
15
+ Class for setting up the axes, title, and fill of a plot.
16
+
17
+ Examples
18
+ --------
19
+ >>> from pygmt.params import Axes
20
+ >>> str(Axes("WSen", title="My Plot Title", fill="lightred"))
21
+ 'WSen+glightred+tMy Plot Title'
22
+ """
23
+
24
+ axes : Any = None
25
+ fill : Any = None
26
+ title : Any = None
27
+
28
+ @property
29
+ def _aliases (self ):
30
+ return [
31
+ Alias (self .axes ),
32
+ Alias (self .fill , prefix = "+g" ),
33
+ Alias (self .title , prefix = "+t" ),
34
+ ]
35
+
36
+
37
+ @dataclass (repr = False )
38
+ class Axis (BaseParam ):
39
+ """
40
+ Class for setting up one axis of a plot.
41
+
42
+ Examples
43
+ --------
44
+ >>> from pygmt.params import Axis
45
+ >>> str(Axis(10, angle=30, label="X axis", unit="km"))
46
+ '10+a30+lX axis+ukm'
47
+ """
48
+
49
+ interval : float | str
50
+ angle : float | str | None = None
51
+ label : str | None = None
52
+ unit : str | None = None
53
+
54
+ @property
55
+ def _aliases (self ):
56
+ return [
57
+ Alias (self .interval ),
58
+ Alias (self .angle , prefix = "+a" ),
59
+ Alias (self .label , prefix = "+l" ),
60
+ Alias (self .unit , prefix = "+u" ),
61
+ ]
62
+
63
+
64
+ @dataclass (repr = False )
65
+ class Frame (BaseParam ):
66
+ """
67
+ Class for setting up the frame of a plot.
68
+
69
+ >>> from pygmt.alias import AliasSystem, Alias
70
+ >>> from pygmt.params import Frame, Axes, Axis
71
+ >>> frame = Frame(
72
+ ... axes=Axes("WSen", title="My Plot Title", fill="lightred"),
73
+ ... xaxis=Axis(10, angle=30, label="X axis", unit="km"),
74
+ ... )
75
+ >>> def func(frame):
76
+ ... alias = AliasSystem(B=Alias(frame))
77
+ ... return alias.kwdict
78
+ >>> dict(func(frame))
79
+ {'B': ['WSen+glightred+tMy Plot Title', 'x10+a30+lX axis+ukm']}
80
+ """
81
+
82
+ axes : Any = None
83
+ xaxis : Any = None
84
+ yaxis : Any = None
85
+ zaxis : Any = None
86
+
87
+ @property
88
+ def _aliases (self ):
89
+ return [
90
+ Alias (self .axes ),
91
+ Alias (self .xaxis , prefix = "x" ),
92
+ Alias (self .yaxis , prefix = "y" ),
93
+ Alias (self .zaxis , prefix = "z" ),
94
+ ]
95
+
96
+ def __iter__ (self ):
97
+ """
98
+ Iterate over the aliases of the class.
99
+
100
+ Yields
101
+ ------
102
+ The value of each alias in the class. None are excluded.
103
+ """
104
+ yield from (alias ._value for alias in self ._aliases if alias ._value is not None )
0 commit comments