@@ -996,6 +996,7 @@ class StepPatch(PathPatch):
996
996
The path is unclosed. It starts and stops at baseline.
997
997
"""
998
998
999
+ @docstring .dedent_interpd
999
1000
def __init__ (self , values , edges , * ,
1000
1001
orientation = 'vertical' , baseline = 0 , ** kwargs ):
1001
1002
"""
@@ -1020,11 +1021,10 @@ def __init__(self, values, edges, *,
1020
1021
1021
1022
%(Patch)s
1022
1023
"""
1023
- self ._edge_default = False
1024
1024
self .orientation = orientation
1025
1025
self ._edges = np .asarray (edges )
1026
1026
self ._values = np .asarray (values )
1027
- self .baseline = baseline
1027
+ self ._baseline = np . asarray ( baseline ) if baseline is not None else None
1028
1028
self ._update_path ()
1029
1029
super ().__init__ (self ._path , ** kwargs )
1030
1030
@@ -1039,34 +1039,35 @@ def _update_path(self):
1039
1039
verts , codes = [], []
1040
1040
1041
1041
_nan_vals = ~ np .isnan (self ._values )
1042
- if self .baseline is not None :
1043
- _nan_vals = _nan_vals & ~ np .isnan (self .baseline )
1042
+ if self ._baseline is not None :
1043
+ _nan_vals = _nan_vals & ~ np .isnan (self ._baseline )
1044
1044
for idx0 , idx1 in cbook .contiguous_regions (_nan_vals ):
1045
1045
x = np .repeat (self ._edges [idx0 :idx1 + 1 ], 2 )
1046
- y = np .repeat (self ._values [idx0 :idx1 ], 2 )
1047
- if np .isscalar (self .baseline ): # baseline values
1048
- y = np .hstack ((self .baseline , y , self .baseline ))
1049
- elif hasattr (self .baseline , '__len__' ): # baseline array
1050
- base = np .repeat (self .baseline [idx0 :idx1 ], 2 )[::- 1 ]
1046
+ y = np .repeat (self ._values [idx0 :idx1 ], 2 )
1047
+ if self ._baseline is None :
1048
+ y = np .hstack ((y [0 ], y , y [- 1 ]))
1049
+ elif self ._baseline .ndim == 0 : # baseline values
1050
+ y = np .hstack ((self ._baseline , y , self ._baseline ))
1051
+ elif self ._baseline .ndim == 1 : # baseline array
1052
+ base = np .repeat (self ._baseline [idx0 :idx1 ], 2 )[::- 1 ]
1051
1053
x = np .concatenate ([x , x [::- 1 ]])
1052
1054
y = np .concatenate ([np .hstack ((base [- 1 ], y , base [0 ],
1053
1055
base [0 ], base , base [- 1 ]))])
1054
1056
else : # no baseline
1055
- y = np . hstack (( y [ 0 ], y , y [ - 1 ]) )
1057
+ raise ValueError ( 'Invalid `baseline` specified' )
1056
1058
if self .orientation == 'vertical' :
1057
1059
xy = np .column_stack ([x , y ])
1058
1060
else :
1059
1061
xy = np .column_stack ([y , x ])
1060
1062
verts .append (xy )
1061
1063
codes .append (np .array ([Path .MOVETO ] + [Path .LINETO ]* (len (xy )- 1 )))
1062
1064
self ._path = Path (np .vstack (verts ), np .hstack (codes ))
1063
-
1064
1065
1065
1066
def get_data (self ):
1066
1067
"""Get `.StepPatch` values and edges."""
1067
- return self ._values , self ._edges
1068
+ return self ._values , self ._edges , self . _baseline
1068
1069
1069
- def set_data (self , values , edges = None ):
1070
+ def set_data (self , values , edges = None , baseline = None ):
1070
1071
"""
1071
1072
Set `.StepPatch` values and optionally edges.
1072
1073
@@ -1075,11 +1076,14 @@ def set_data(self, values, edges=None):
1075
1076
values : 1D array-like or None
1076
1077
Will not update values, if passing None
1077
1078
edges : 1D array-like, optional
1079
+ baseline : 1D array-like, optional
1078
1080
"""
1079
1081
if values is not None :
1080
1082
self ._values = np .asarray (values )
1081
1083
if edges is not None :
1082
1084
self ._edges = np .asarray (edges )
1085
+ if baseline is not None :
1086
+ self ._baseline = np .asarray (baseline )
1083
1087
self ._update_path ()
1084
1088
self .stale = True
1085
1089
@@ -1104,20 +1108,18 @@ def set_edges(self, edges):
1104
1108
self .set_data (None , edges = edges )
1105
1109
1106
1110
def get_baseline (self ):
1107
- """Get `.StepPatch` baseline value ."""
1108
- return self .baseline
1111
+ """Get `.StepPatch` baseline."""
1112
+ return self ._baseline
1109
1113
1110
1114
def set_baseline (self , baseline ):
1111
1115
"""
1112
- Set `.StepPatch` baseline value .
1116
+ Set `.StepPatch` baseline.
1113
1117
1114
1118
Parameters
1115
1119
----------
1116
1120
baseline : float or None
1117
1121
"""
1118
- self .baseline = baseline
1119
- self ._update_path ()
1120
- self .stale = True
1122
+ self .set_data (None , baseline = baseline )
1121
1123
1122
1124
1123
1125
class Polygon (Patch ):
0 commit comments