def mpl_plotly_chart(figure) -> V1EventChart: try: import plotly.tools except ImportError: logger.warning(PLOTLY_ERROR_MESSAGE) return UNKNOWN try: import matplotlib from matplotlib.figure import Figure except ImportError: logger.warning(MATPLOTLIB_ERROR_MESSAGE) if module_type(figure, "matplotlib.figure.Figure"): pass else: if figure == matplotlib.pyplot: figure = figure.gcf() elif not isinstance(figure, Figure): if hasattr(figure, "figure"): figure = figure.figure # Some matplotlib objects have a figure function if not isinstance(figure, Figure): raise ValueError( "Only matplotlib.pyplot or matplotlib.pyplot.Figure objects are accepted." ) figure = plotly.tools.mpl_to_plotly(figure) return plotly_chart(figure=figure)
def mpl_plotly_chart(figure) -> V1EventChart: try: import plotly.tools except ImportError: logger.warning(PLOTLY_ERROR_MESSAGE) return UNKNOWN try: import matplotlib from matplotlib.figure import Figure except ImportError: logger.warning(MATPLOTLIB_ERROR_MESSAGE) if module_type(figure, "matplotlib.figure.Figure"): pass else: if figure == matplotlib.pyplot: figure = figure.gcf() elif not isinstance(figure, Figure): if hasattr(figure, "figure"): figure = figure.figure # Some matplotlib objects have a figure function if not isinstance(figure, Figure): raise ValueError( "Only matplotlib.pyplot or matplotlib.pyplot.Figure objects are accepted." ) # This code was taken from: # https://github.com/matplotlib/matplotlib/pull/16772/files#diff-506cc6d736a0593e8bb820981b2c12ae # noqa # Removed in https://github.com/matplotlib/matplotlib/pull/16772 from matplotlib.spines import Spine def is_frame_like(self): """return True if directly on axes frame This is useful for determining if a spine is the edge of an old style MPL plot. If so, this function will return True. """ self._ensure_position_is_set() position = self._position if isinstance(position, str): if position == "center": position = ("axes", 0.5) elif position == "zero": position = ("data", 0) if len(position) != 2: raise ValueError("position should be 2-tuple") position_type, amount = position if position_type == "outward" and amount == 0: return True else: return False Spine.is_frame_like = is_frame_like figure = plotly.tools.mpl_to_plotly(figure) return plotly_chart(figure=figure)
def plotly_chart(figure) -> V1EventChart: try: import plotly.tools except ImportError: logger.warning(PLOTLY_ERROR_MESSAGE) return UNKNOWN if module_type(figure, "matplotlib.figure.Figure"): figure = plotly.tools.mpl_to_plotly(figure) else: figure = plotly.tools.return_figure_from_figure_or_data( figure, validate_figure=True) return V1EventChart(kind=V1EventChartKind.PLOTLY, figure=figure)