@@ -992,6 +992,7 @@ def set_path(self, path):
992
992
class StepPatch (PathPatch ):
993
993
"""An unclosed step path patch."""
994
994
995
+ @docstring .dedent_interpd
995
996
def __init__ (self , values , edges , * ,
996
997
orientation = 'vertical' , baseline = 0 , ** kwargs ):
997
998
"""
@@ -1014,11 +1015,10 @@ def __init__(self, values, edges, *,
1014
1015
1015
1016
%(Patch)s
1016
1017
"""
1017
- self ._edge_default = False
1018
1018
self .orientation = orientation
1019
1019
self ._edges = np .asarray (edges )
1020
1020
self ._values = np .asarray (values )
1021
- self .baseline = baseline
1021
+ self ._baseline = np . asarray ( baseline ) if baseline is not None else None
1022
1022
self ._update_path ()
1023
1023
super ().__init__ (self ._path , ** kwargs )
1024
1024
@@ -1033,34 +1033,35 @@ def _update_path(self):
1033
1033
verts , codes = [], []
1034
1034
1035
1035
_nan_vals = ~ np .isnan (self ._values )
1036
- if self .baseline is not None :
1037
- _nan_vals = _nan_vals & ~ np .isnan (self .baseline )
1036
+ if self ._baseline is not None :
1037
+ _nan_vals = _nan_vals & ~ np .isnan (self ._baseline )
1038
1038
for idx0 , idx1 in cbook .contiguous_regions (_nan_vals ):
1039
1039
x = np .repeat (self ._edges [idx0 :idx1 + 1 ], 2 )
1040
- y = np .repeat (self ._values [idx0 :idx1 ], 2 )
1041
- if np .isscalar (self .baseline ): # baseline values
1042
- y = np .hstack ((self .baseline , y , self .baseline ))
1043
- elif hasattr (self .baseline , '__len__' ): # baseline array
1044
- base = np .repeat (self .baseline [idx0 :idx1 ], 2 )[::- 1 ]
1040
+ y = np .repeat (self ._values [idx0 :idx1 ], 2 )
1041
+ if self ._baseline is None :
1042
+ y = np .hstack ((y [0 ], y , y [- 1 ]))
1043
+ elif self ._baseline .ndim == 0 : # baseline values
1044
+ y = np .hstack ((self ._baseline , y , self ._baseline ))
1045
+ elif self ._baseline .ndim == 1 : # baseline array
1046
+ base = np .repeat (self ._baseline [idx0 :idx1 ], 2 )[::- 1 ]
1045
1047
x = np .concatenate ([x , x [::- 1 ]])
1046
1048
y = np .concatenate ([np .hstack ((base [- 1 ], y , base [0 ],
1047
1049
base [0 ], base , base [- 1 ]))])
1048
1050
else : # no baseline
1049
- y = np . hstack (( y [ 0 ], y , y [ - 1 ]) )
1051
+ raise ValueError ( 'Invalid `baseline` specified' )
1050
1052
if self .orientation == 'vertical' :
1051
1053
xy = np .column_stack ([x , y ])
1052
1054
else :
1053
1055
xy = np .column_stack ([y , x ])
1054
1056
verts .append (xy )
1055
1057
codes .append (np .array ([Path .MOVETO ] + [Path .LINETO ]* (len (xy )- 1 )))
1056
1058
self ._path = Path (np .vstack (verts ), np .hstack (codes ))
1057
-
1058
1059
1059
1060
def get_data (self ):
1060
1061
"""Get `.StepPatch` values and edges."""
1061
- return self ._values , self ._edges
1062
+ return self ._values , self ._edges , self . _baseline
1062
1063
1063
- def set_data (self , values , edges = None ):
1064
+ def set_data (self , values , edges = None , baseline = None ):
1064
1065
"""
1065
1066
Set `.StepPatch` values and optionally edges.
1066
1067
@@ -1069,11 +1070,14 @@ def set_data(self, values, edges=None):
1069
1070
values : 1D array-like or None
1070
1071
Will not update values, if passing None
1071
1072
edges : 1D array-like, optional
1073
+ baseline : 1D array-like, optional
1072
1074
"""
1073
1075
if values is not None :
1074
1076
self ._values = np .asarray (values )
1075
1077
if edges is not None :
1076
1078
self ._edges = np .asarray (edges )
1079
+ if baseline is not None :
1080
+ self ._baseline = np .asarray (baseline )
1077
1081
self ._update_path ()
1078
1082
self .stale = True
1079
1083
@@ -1098,20 +1102,18 @@ def set_edges(self, edges):
1098
1102
self .set_data (None , edges = edges )
1099
1103
1100
1104
def get_baseline (self ):
1101
- """Get `.StepPatch` baseline value ."""
1102
- return self .baseline
1105
+ """Get `.StepPatch` baseline."""
1106
+ return self ._baseline
1103
1107
1104
1108
def set_baseline (self , baseline ):
1105
1109
"""
1106
- Set `.StepPatch` baseline value .
1110
+ Set `.StepPatch` baseline.
1107
1111
1108
1112
Parameters
1109
1113
----------
1110
1114
baseline : float or None
1111
1115
"""
1112
- self .baseline = baseline
1113
- self ._update_path ()
1114
- self .stale = True
1116
+ self .set_data (None , baseline = baseline )
1115
1117
1116
1118
1117
1119
class Polygon (Patch ):
0 commit comments