@@ -150,6 +150,7 @@ def time_response_plot(
150150 config.defaults[''timeplot.rcParams'].
151151
152152 """
153+ from .freqplot import _process_ax_keyword
153154 from .iosys import InputOutputSystem
154155 from .timeresp import TimeResponseData
155156
@@ -160,7 +161,7 @@ def time_response_plot(
160161 # Set up defaults
161162 time_label = config ._get_param (
162163 'timeplot' , 'time_label' , kwargs , _timeplot_defaults , pop = True )
163- timeplot_rcParams = config ._get_param (
164+ rcParams = config ._get_param (
164165 'timeplot' , 'rcParams' , kwargs , _timeplot_defaults , pop = True )
165166
166167 if kwargs .get ('input_props' , None ) and len (fmt ) > 0 :
@@ -275,33 +276,7 @@ def time_response_plot(
275276 nrows , ncols = ncols , nrows
276277
277278 # See if we can use the current figure axes
278- fig = plt .gcf () # get current figure (or create new one)
279- if ax is None and plt .get_fignums ():
280- ax = fig .get_axes ()
281- if len (ax ) == nrows * ncols :
282- # Assume that the shape is right (no easy way to infer this)
283- ax = np .array (ax ).reshape (nrows , ncols )
284- elif len (ax ) != 0 :
285- # Need to generate a new figure
286- fig , ax = plt .figure (), None
287- else :
288- # Blank figure, just need to recreate axes
289- ax = None
290-
291- # Create new axes, if needed, and customize them
292- if ax is None :
293- with plt .rc_context (timeplot_rcParams ):
294- ax_array = fig .subplots (nrows , ncols , sharex = True , squeeze = False )
295- fig .set_layout_engine ('tight' )
296- fig .align_labels ()
297-
298- else :
299- # Make sure the axes are the right shape
300- if ax .shape != (nrows , ncols ):
301- raise ValueError (
302- "specified axes are not the right shape; "
303- f"got { ax .shape } but expecting ({ nrows } , { ncols } )" )
304- ax_array = ax
279+ fig , ax_array = _process_ax_keyword (ax , (nrows , ncols ), rcParams = rcParams )
305280
306281 #
307282 # Map inputs/outputs and traces to axes
@@ -506,7 +481,7 @@ def _make_line_label(signal_index, signal_labels, trace_index):
506481 else :
507482 label = f"Trace { trace } "
508483
509- with plt .rc_context (timeplot_rcParams ):
484+ with plt .rc_context (rcParams ):
510485 ax_array [0 , trace ].set_title (label )
511486
512487 # Label the outputs
@@ -608,7 +583,7 @@ def _make_line_label(signal_index, signal_labels, trace_index):
608583
609584 # Update the labels to remove common strings
610585 if len (labels ) > 1 and legend_map [i , j ] != None :
611- with plt .rc_context (timeplot_rcParams ):
586+ with plt .rc_context (rcParams ):
612587 ax .legend (labels , loc = legend_map [i , j ])
613588
614589
@@ -643,7 +618,7 @@ def _make_line_label(signal_index, signal_labels, trace_index):
643618 new_title = old_title + separator + new_title [common_len :]
644619
645620 # Add the title
646- with plt .rc_context (timeplot_rcParams ):
621+ with plt .rc_context (rcParams ):
647622 fig .suptitle (new_title )
648623
649624 return out
0 commit comments