@@ -794,6 +794,23 @@ def _construct_hf_data_dict(
794794 "hovertext" : dc .hovertext ,
795795 }
796796
797+ @staticmethod
798+ def _add_trace_to_add_traces_kwargs (kwargs : dict ) -> dict :
799+ """Convert the `add_trace` kwargs to the `add_traces` kwargs."""
800+ # The keywords that need to be converted to a list
801+ convert_keywords = ["row" , "col" , "secondary_y" ]
802+
803+ updated_kwargs = {} # The updated kwargs (from `add_trace` to `add_traces`)
804+ for keyword in convert_keywords :
805+ value = kwargs .pop (keyword , None )
806+ if value is not None :
807+ updated_kwargs [f"{ keyword } s" ] = [value ]
808+ else :
809+ updated_kwargs [f"{ keyword } s" ] = None
810+
811+ return {** kwargs , ** updated_kwargs }
812+
813+
797814 def add_trace (
798815 self ,
799816 trace : Union [BaseTraceType , dict ],
@@ -955,17 +972,22 @@ def add_trace(
955972 # Hence, you first downsample the trace.
956973 trace = self ._check_update_trace_data (trace )
957974 assert trace is not None
958- return super (self ._figure_class , self ).add_trace (trace , ** trace_kwargs )
975+ return super (AbstractFigureAggregator , self ).add_traces (
976+ [trace ], ** self ._add_trace_to_add_traces_kwargs (trace_kwargs )
977+ )
959978 else :
960979 self ._print (f"[i] NOT resampling { trace ['name' ]} - len={ n_samples } " )
961980 # TODO: can be made more generic
962981 trace .x = dc .x
963982 trace .y = dc .y
964983 trace .text = dc .text
965984 trace .hovertext = dc .hovertext
966- return super (self ._figure_class , self ).add_trace (trace , ** trace_kwargs )
967-
968- return super (self ._figure_class , self ).add_trace (trace , ** trace_kwargs )
985+ return super (AbstractFigureAggregator , self ).add_traces (
986+ [trace ], ** self ._add_trace_to_add_traces_kwargs (trace_kwargs )
987+ )
988+ return super (AbstractFigureAggregator , self ).add_traces (
989+ [trace ], ** self ._add_trace_to_add_traces_kwargs (trace_kwargs )
990+ )
969991
970992 def add_traces (
971993 self ,
@@ -1152,8 +1174,8 @@ def replace(self, figure: go.Figure, convert_existing_traces: bool = True):
11521174 )
11531175
11541176 def construct_update_data (
1155- self ,
1156- relayout_data : dict
1177+ self ,
1178+ relayout_data : dict ,
11571179 ) -> Union [List [dict ], dash .no_update ]:
11581180 """Construct the to-be-updated front-end data, based on the layout change.
11591181
0 commit comments