@@ -652,22 +652,17 @@ def plot_heatmap(
652652 """
653653 dataarray = self .solution [variable_name ]
654654
655- dataarray , suffix_parts = _apply_indexer_to_data (dataarray , indexer )
656-
657- # Create name
658- suffix = '--' + '-' .join (suffix_parts ) if suffix_parts else ''
659- name = variable_name if not suffix_parts else f'{ variable_name } --{ '-' .join (suffix_parts )} ' if suffix else variable_name
660-
661655 return plot_heatmap (
662656 dataarray = dataarray ,
663- name = name ,
657+ name = variable_name ,
664658 folder = self .folder ,
665659 heatmap_timeframes = heatmap_timeframes ,
666660 heatmap_timesteps_per_frame = heatmap_timesteps_per_frame ,
667661 color_map = color_map ,
668662 save = save ,
669663 show = show ,
670664 engine = engine ,
665+ indexer = indexer ,
671666 )
672667
673668 def plot_network (
@@ -1330,6 +1325,7 @@ def plot_heatmap(
13301325 save : Union [bool , pathlib .Path ] = False ,
13311326 show : bool = True ,
13321327 engine : plotting .PlottingEngine = 'plotly' ,
1328+ indexer : Optional [Dict [str , Any ]] = None ,
13331329):
13341330 """
13351331 Plots a heatmap of the solution of a variable.
@@ -1345,6 +1341,10 @@ def plot_heatmap(
13451341 show: Whether to show the plot or not.
13461342 engine: The engine to use for plotting. Can be either 'plotly' or 'matplotlib'.
13471343 """
1344+ dataarray , suffix_parts = _apply_indexer_to_data (dataarray , indexer , drop = True )
1345+ suffix = '--' + '-' .join (suffix_parts ) if suffix_parts else ''
1346+ name = name if not suffix_parts else name + suffix
1347+
13481348 heatmap_data = plotting .heat_map_data_from_df (
13491349 dataarray .to_dataframe (name ), heatmap_timeframes , heatmap_timesteps_per_frame , 'ffill'
13501350 )
@@ -1608,7 +1608,7 @@ def apply_filter(array, coord_name: str, coord_values: Union[Any, List[Any]]):
16081608 return da
16091609
16101610
1611- def _apply_indexer_to_data (data : Union [xr .DataArray , xr .Dataset ], indexer : Optional [Dict [str , Any ]] = None ):
1611+ def _apply_indexer_to_data (data : Union [xr .DataArray , xr .Dataset ], indexer : Optional [Dict [str , Any ]] = None , drop = False ):
16121612 """
16131613 Apply indexer selection or auto-select first values for non-time dimensions.
16141614
@@ -1623,7 +1623,7 @@ def _apply_indexer_to_data(data: Union[xr.DataArray, xr.Dataset], indexer: Optio
16231623
16241624 if indexer is not None :
16251625 # User provided indexer
1626- data = data .sel (indexer )
1626+ data = data .sel (indexer , drop = drop )
16271627 selection_string .extend (f"{ v } [{ k } ]" for k , v in indexer .items ())
16281628 else :
16291629 # Auto-select first value for each dimension except 'time'
@@ -1634,6 +1634,6 @@ def _apply_indexer_to_data(data: Union[xr.DataArray, xr.Dataset], indexer: Optio
16341634 selection [dim ] = first_value
16351635 selection_string .append (f"{ first_value } [{ dim } ]" )
16361636 if selection :
1637- data = data .sel (selection )
1637+ data = data .sel (selection , drop = drop )
16381638
16391639 return data , selection_string
0 commit comments