diff --git a/plotly/graph_objs/_figure.py b/plotly/graph_objs/_figure.py index 99529b66f1a..b635e49ac3c 100644 --- a/plotly/graph_objs/_figure.py +++ b/plotly/graph_objs/_figure.py @@ -2,6 +2,7 @@ # Modifications will be overwitten the next time code generation run. from plotly.basedatatypes import BaseFigure +from plotly.graph_objs import Splom class Figure(BaseFigure): @@ -17938,52 +17939,53 @@ def add_splom( ------- Figure """ - from plotly.graph_objs import Splom - - new_trace = Splom( - customdata=customdata, - customdatasrc=customdatasrc, - diagonal=diagonal, - dimensions=dimensions, - dimensiondefaults=dimensiondefaults, - hoverinfo=hoverinfo, - hoverinfosrc=hoverinfosrc, - hoverlabel=hoverlabel, - hovertemplate=hovertemplate, - hovertemplatesrc=hovertemplatesrc, - hovertext=hovertext, - hovertextsrc=hovertextsrc, - ids=ids, - idssrc=idssrc, - legend=legend, - legendgroup=legendgroup, - legendgrouptitle=legendgrouptitle, - legendrank=legendrank, - legendwidth=legendwidth, - marker=marker, - meta=meta, - metasrc=metasrc, - name=name, - opacity=opacity, - selected=selected, - selectedpoints=selectedpoints, - showlegend=showlegend, - showlowerhalf=showlowerhalf, - showupperhalf=showupperhalf, - stream=stream, - text=text, - textsrc=textsrc, - uid=uid, - uirevision=uirevision, - unselected=unselected, - visible=visible, - xaxes=xaxes, - xhoverformat=xhoverformat, - yaxes=yaxes, - yhoverformat=yhoverformat, + # Optimize import statement: move to module-level to avoid repeated import + # See note below for explanation + return self._add_splom_fast( + customdata, + customdatasrc, + diagonal, + dimensions, + dimensiondefaults, + hoverinfo, + hoverinfosrc, + hoverlabel, + hovertemplate, + hovertemplatesrc, + hovertext, + hovertextsrc, + ids, + idssrc, + legend, + legendgroup, + legendgrouptitle, + legendrank, + legendwidth, + marker, + meta, + metasrc, + name, + opacity, + selected, + selectedpoints, + showlegend, + showlowerhalf, + showupperhalf, + stream, + text, + textsrc, + uid, + uirevision, + unselected, + visible, + xaxes, + xhoverformat, + yaxes, + yhoverformat, + row, + col, **kwargs, ) - return self.add_trace(new_trace, row=row, col=col) def add_streamtube( self, @@ -24474,3 +24476,97 @@ def add_shape( secondary_y=secondary_y, exclude_empty_subplots=exclude_empty_subplots, ) + + def _add_splom_fast( + self, + customdata, + customdatasrc, + diagonal, + dimensions, + dimensiondefaults, + hoverinfo, + hoverinfosrc, + hoverlabel, + hovertemplate, + hovertemplatesrc, + hovertext, + hovertextsrc, + ids, + idssrc, + legend, + legendgroup, + legendgrouptitle, + legendrank, + legendwidth, + marker, + meta, + metasrc, + name, + opacity, + selected, + selectedpoints, + showlegend, + showlowerhalf, + showupperhalf, + stream, + text, + textsrc, + uid, + uirevision, + unselected, + visible, + xaxes, + xhoverformat, + yaxes, + yhoverformat, + row, + col, + **kwargs, + ) -> "Figure": + # Direct construction using already-imported Splom for faster function call + + new_trace = Splom( + customdata=customdata, + customdatasrc=customdatasrc, + diagonal=diagonal, + dimensions=dimensions, + dimensiondefaults=dimensiondefaults, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + showlowerhalf=showlowerhalf, + showupperhalf=showupperhalf, + stream=stream, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + xaxes=xaxes, + xhoverformat=xhoverformat, + yaxes=yaxes, + yhoverformat=yhoverformat, + **kwargs, + ) + # Avoid super() for fastest dispatch + return BaseFigure.add_trace(self, new_trace, row=row, col=col)