<!-- # hard line break macro for HTML -->

# fiftyone.core.plots

* [fiftyone.core.plots.base](fiftyone.core.plots.base.md)
  * [`plot_confusion_matrix()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.plot_confusion_matrix)
  * [`plot_regressions()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.plot_regressions)
  * [`plot_pr_curve()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.plot_pr_curve)
  * [`plot_pr_curves()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.plot_pr_curves)
  * [`plot_roc_curve()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.plot_roc_curve)
  * [`lines()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.lines)
  * [`scatterplot()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.scatterplot)
  * [`location_scatterplot()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.location_scatterplot)
  * [`Plot`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.Plot)
    * [`Plot.is_frozen`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.Plot.is_frozen)
    * [`Plot.show()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.Plot.show)
    * [`Plot.save()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.Plot.save)
    * [`Plot.freeze()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.Plot.freeze)
  * [`ResponsivePlot`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ResponsivePlot)
    * [`ResponsivePlot.link_type`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ResponsivePlot.link_type)
    * [`ResponsivePlot.supports_session_updates`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ResponsivePlot.supports_session_updates)
    * [`ResponsivePlot.is_connected`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ResponsivePlot.is_connected)
    * [`ResponsivePlot.is_disconnected`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ResponsivePlot.is_disconnected)
    * [`ResponsivePlot.is_frozen`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ResponsivePlot.is_frozen)
    * [`ResponsivePlot.connect()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ResponsivePlot.connect)
    * [`ResponsivePlot.show()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ResponsivePlot.show)
    * [`ResponsivePlot.reset()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ResponsivePlot.reset)
    * [`ResponsivePlot.freeze()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ResponsivePlot.freeze)
    * [`ResponsivePlot.disconnect()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ResponsivePlot.disconnect)
    * [`ResponsivePlot.save()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ResponsivePlot.save)
  * [`ViewPlot`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ViewPlot)
    * [`ViewPlot.supports_session_updates`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ViewPlot.supports_session_updates)
    * [`ViewPlot.update_view()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ViewPlot.update_view)
    * [`ViewPlot.reset()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ViewPlot.reset)
    * [`ViewPlot.connect()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ViewPlot.connect)
    * [`ViewPlot.disconnect()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ViewPlot.disconnect)
    * [`ViewPlot.freeze()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ViewPlot.freeze)
    * [`ViewPlot.is_connected`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ViewPlot.is_connected)
    * [`ViewPlot.is_disconnected`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ViewPlot.is_disconnected)
    * [`ViewPlot.is_frozen`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ViewPlot.is_frozen)
    * [`ViewPlot.link_type`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ViewPlot.link_type)
    * [`ViewPlot.save()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ViewPlot.save)
    * [`ViewPlot.show()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ViewPlot.show)
  * [`InteractivePlot`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot)
    * [`InteractivePlot.selection_mode`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot.selection_mode)
    * [`InteractivePlot.init_view`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot.init_view)
    * [`InteractivePlot.selected_ids`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot.selected_ids)
    * [`InteractivePlot.recommend_link_type()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot.recommend_link_type)
    * [`InteractivePlot.register_selection_callback()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot.register_selection_callback)
    * [`InteractivePlot.register_sync_callback()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot.register_sync_callback)
    * [`InteractivePlot.register_disconnect_callback()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot.register_disconnect_callback)
    * [`InteractivePlot.select_ids()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot.select_ids)
    * [`InteractivePlot.connect()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot.connect)
    * [`InteractivePlot.disconnect()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot.disconnect)
    * [`InteractivePlot.freeze()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot.freeze)
    * [`InteractivePlot.is_connected`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot.is_connected)
    * [`InteractivePlot.is_disconnected`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot.is_disconnected)
    * [`InteractivePlot.is_frozen`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot.is_frozen)
    * [`InteractivePlot.link_type`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot.link_type)
    * [`InteractivePlot.save()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot.save)
    * [`InteractivePlot.show()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot.show)
    * [`InteractivePlot.supports_session_updates`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot.supports_session_updates)
    * [`InteractivePlot.reset()`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.InteractivePlot.reset)
* [fiftyone.core.plots.manager](fiftyone.core.plots.manager.md)
  * [`PlotManager`](fiftyone.core.plots.manager.md#fiftyone.core.plots.manager.PlotManager)
    * [`PlotManager.summary()`](fiftyone.core.plots.manager.md#fiftyone.core.plots.manager.PlotManager.summary)
    * [`PlotManager.keys()`](fiftyone.core.plots.manager.md#fiftyone.core.plots.manager.PlotManager.keys)
    * [`PlotManager.items()`](fiftyone.core.plots.manager.md#fiftyone.core.plots.manager.PlotManager.items)
    * [`PlotManager.values()`](fiftyone.core.plots.manager.md#fiftyone.core.plots.manager.PlotManager.values)
    * [`PlotManager.is_connected`](fiftyone.core.plots.manager.md#fiftyone.core.plots.manager.PlotManager.is_connected)
    * [`PlotManager.is_disconnected`](fiftyone.core.plots.manager.md#fiftyone.core.plots.manager.PlotManager.is_disconnected)
    * [`PlotManager.has_view_links`](fiftyone.core.plots.manager.md#fiftyone.core.plots.manager.PlotManager.has_view_links)
    * [`PlotManager.has_sample_links`](fiftyone.core.plots.manager.md#fiftyone.core.plots.manager.PlotManager.has_sample_links)
    * [`PlotManager.has_frame_links`](fiftyone.core.plots.manager.md#fiftyone.core.plots.manager.PlotManager.has_frame_links)
    * [`PlotManager.has_label_links`](fiftyone.core.plots.manager.md#fiftyone.core.plots.manager.PlotManager.has_label_links)
    * [`PlotManager.attach()`](fiftyone.core.plots.manager.md#fiftyone.core.plots.manager.PlotManager.attach)
    * [`PlotManager.remove()`](fiftyone.core.plots.manager.md#fiftyone.core.plots.manager.PlotManager.remove)
    * [`PlotManager.clear()`](fiftyone.core.plots.manager.md#fiftyone.core.plots.manager.PlotManager.clear)
    * [`PlotManager.pop()`](fiftyone.core.plots.manager.md#fiftyone.core.plots.manager.PlotManager.pop)
    * [`PlotManager.connect()`](fiftyone.core.plots.manager.md#fiftyone.core.plots.manager.PlotManager.connect)
    * [`PlotManager.disconnect()`](fiftyone.core.plots.manager.md#fiftyone.core.plots.manager.PlotManager.disconnect)
    * [`PlotManager.sync()`](fiftyone.core.plots.manager.md#fiftyone.core.plots.manager.PlotManager.sync)
    * [`PlotManager.freeze()`](fiftyone.core.plots.manager.md#fiftyone.core.plots.manager.PlotManager.freeze)
* [fiftyone.core.plots.matplotlib](fiftyone.core.plots.matplotlib.md)
  * [`plot_confusion_matrix()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.plot_confusion_matrix)
  * [`plot_regressions()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.plot_regressions)
  * [`plot_pr_curve()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.plot_pr_curve)
  * [`plot_pr_curves()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.plot_pr_curves)
  * [`plot_roc_curve()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.plot_roc_curve)
  * [`lines()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.lines)
  * [`scatterplot()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.scatterplot)
  * [`location_scatterplot()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.location_scatterplot)
  * [`InteractiveMatplotlibPlot`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot)
    * [`InteractiveMatplotlibPlot.supports_session_updates`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot.supports_session_updates)
    * [`InteractiveMatplotlibPlot.show()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot.show)
    * [`InteractiveMatplotlibPlot.save()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot.save)
    * [`InteractiveMatplotlibPlot.connect()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot.connect)
    * [`InteractiveMatplotlibPlot.disconnect()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot.disconnect)
    * [`InteractiveMatplotlibPlot.freeze()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot.freeze)
    * [`InteractiveMatplotlibPlot.init_view`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot.init_view)
    * [`InteractiveMatplotlibPlot.is_connected`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot.is_connected)
    * [`InteractiveMatplotlibPlot.is_disconnected`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot.is_disconnected)
    * [`InteractiveMatplotlibPlot.is_frozen`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot.is_frozen)
    * [`InteractiveMatplotlibPlot.link_type`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot.link_type)
    * [`InteractiveMatplotlibPlot.recommend_link_type()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot.recommend_link_type)
    * [`InteractiveMatplotlibPlot.register_disconnect_callback()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot.register_disconnect_callback)
    * [`InteractiveMatplotlibPlot.register_selection_callback()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot.register_selection_callback)
    * [`InteractiveMatplotlibPlot.register_sync_callback()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot.register_sync_callback)
    * [`InteractiveMatplotlibPlot.reset()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot.reset)
    * [`InteractiveMatplotlibPlot.select_ids()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot.select_ids)
    * [`InteractiveMatplotlibPlot.selected_ids`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot.selected_ids)
    * [`InteractiveMatplotlibPlot.selection_mode`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveMatplotlibPlot.selection_mode)
  * [`InteractiveCollection`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection)
    * [`InteractiveCollection.connect()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection.connect)
    * [`InteractiveCollection.disconnect()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection.disconnect)
    * [`InteractiveCollection.freeze()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection.freeze)
    * [`InteractiveCollection.init_view`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection.init_view)
    * [`InteractiveCollection.is_connected`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection.is_connected)
    * [`InteractiveCollection.is_disconnected`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection.is_disconnected)
    * [`InteractiveCollection.is_frozen`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection.is_frozen)
    * [`InteractiveCollection.link_type`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection.link_type)
    * [`InteractiveCollection.recommend_link_type()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection.recommend_link_type)
    * [`InteractiveCollection.register_disconnect_callback()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection.register_disconnect_callback)
    * [`InteractiveCollection.register_selection_callback()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection.register_selection_callback)
    * [`InteractiveCollection.register_sync_callback()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection.register_sync_callback)
    * [`InteractiveCollection.reset()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection.reset)
    * [`InteractiveCollection.save()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection.save)
    * [`InteractiveCollection.select_ids()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection.select_ids)
    * [`InteractiveCollection.selected_ids`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection.selected_ids)
    * [`InteractiveCollection.selection_mode`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection.selection_mode)
    * [`InteractiveCollection.show()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection.show)
    * [`InteractiveCollection.supports_session_updates`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.InteractiveCollection.supports_session_updates)
* [fiftyone.core.plots.plotly](fiftyone.core.plots.plotly.md)
  * [`plot_confusion_matrix()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.plot_confusion_matrix)
  * [`plot_regressions()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.plot_regressions)
  * [`plot_pr_curve()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.plot_pr_curve)
  * [`plot_pr_curves()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.plot_pr_curves)
  * [`plot_roc_curve()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.plot_roc_curve)
  * [`lines()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.lines)
  * [`scatterplot()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.scatterplot)
  * [`location_scatterplot()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.location_scatterplot)
  * [`get_colormap()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.get_colormap)
  * [`PlotlyWidgetMixin`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyWidgetMixin)
    * [`PlotlyWidgetMixin.save()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyWidgetMixin.save)
  * [`PlotlyNotebookPlot`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyNotebookPlot)
    * [`PlotlyNotebookPlot.is_frozen`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyNotebookPlot.is_frozen)
    * [`PlotlyNotebookPlot.update_layout()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyNotebookPlot.update_layout)
    * [`PlotlyNotebookPlot.show()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyNotebookPlot.show)
    * [`PlotlyNotebookPlot.freeze()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyNotebookPlot.freeze)
    * [`PlotlyNotebookPlot.save()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyNotebookPlot.save)
  * [`PlotlyInteractivePlot`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot)
    * [`PlotlyInteractivePlot.update_layout()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.update_layout)
    * [`PlotlyInteractivePlot.show()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.show)
    * [`PlotlyInteractivePlot.connect()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.connect)
    * [`PlotlyInteractivePlot.disconnect()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.disconnect)
    * [`PlotlyInteractivePlot.freeze()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.freeze)
    * [`PlotlyInteractivePlot.init_view`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.init_view)
    * [`PlotlyInteractivePlot.is_connected`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.is_connected)
    * [`PlotlyInteractivePlot.is_disconnected`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.is_disconnected)
    * [`PlotlyInteractivePlot.is_frozen`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.is_frozen)
    * [`PlotlyInteractivePlot.link_type`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.link_type)
    * [`PlotlyInteractivePlot.recommend_link_type()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.recommend_link_type)
    * [`PlotlyInteractivePlot.register_disconnect_callback()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.register_disconnect_callback)
    * [`PlotlyInteractivePlot.register_selection_callback()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.register_selection_callback)
    * [`PlotlyInteractivePlot.register_sync_callback()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.register_sync_callback)
    * [`PlotlyInteractivePlot.reset()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.reset)
    * [`PlotlyInteractivePlot.save()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.save)
    * [`PlotlyInteractivePlot.select_ids()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.select_ids)
    * [`PlotlyInteractivePlot.selected_ids`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.selected_ids)
    * [`PlotlyInteractivePlot.selection_mode`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.selection_mode)
    * [`PlotlyInteractivePlot.supports_session_updates`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyInteractivePlot.supports_session_updates)
  * [`InteractiveScatter`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter)
    * [`InteractiveScatter.supports_session_updates`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.supports_session_updates)
    * [`InteractiveScatter.connect()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.connect)
    * [`InteractiveScatter.disconnect()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.disconnect)
    * [`InteractiveScatter.freeze()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.freeze)
    * [`InteractiveScatter.init_view`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.init_view)
    * [`InteractiveScatter.is_connected`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.is_connected)
    * [`InteractiveScatter.is_disconnected`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.is_disconnected)
    * [`InteractiveScatter.is_frozen`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.is_frozen)
    * [`InteractiveScatter.link_type`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.link_type)
    * [`InteractiveScatter.recommend_link_type()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.recommend_link_type)
    * [`InteractiveScatter.register_disconnect_callback()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.register_disconnect_callback)
    * [`InteractiveScatter.register_selection_callback()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.register_selection_callback)
    * [`InteractiveScatter.register_sync_callback()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.register_sync_callback)
    * [`InteractiveScatter.reset()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.reset)
    * [`InteractiveScatter.save()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.save)
    * [`InteractiveScatter.select_ids()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.select_ids)
    * [`InteractiveScatter.selected_ids`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.selected_ids)
    * [`InteractiveScatter.selection_mode`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.selection_mode)
    * [`InteractiveScatter.show()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.show)
    * [`InteractiveScatter.update_layout()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter.update_layout)
  * [`InteractiveHeatmap`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap)
    * [`InteractiveHeatmap.supports_session_updates`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.supports_session_updates)
    * [`InteractiveHeatmap.init_view`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.init_view)
    * [`InteractiveHeatmap.connect()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.connect)
    * [`InteractiveHeatmap.disconnect()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.disconnect)
    * [`InteractiveHeatmap.freeze()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.freeze)
    * [`InteractiveHeatmap.is_connected`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.is_connected)
    * [`InteractiveHeatmap.is_disconnected`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.is_disconnected)
    * [`InteractiveHeatmap.is_frozen`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.is_frozen)
    * [`InteractiveHeatmap.link_type`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.link_type)
    * [`InteractiveHeatmap.recommend_link_type()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.recommend_link_type)
    * [`InteractiveHeatmap.register_disconnect_callback()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.register_disconnect_callback)
    * [`InteractiveHeatmap.register_selection_callback()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.register_selection_callback)
    * [`InteractiveHeatmap.register_sync_callback()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.register_sync_callback)
    * [`InteractiveHeatmap.reset()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.reset)
    * [`InteractiveHeatmap.save()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.save)
    * [`InteractiveHeatmap.select_ids()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.select_ids)
    * [`InteractiveHeatmap.selected_ids`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.selected_ids)
    * [`InteractiveHeatmap.selection_mode`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.selection_mode)
    * [`InteractiveHeatmap.show()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.show)
    * [`InteractiveHeatmap.update_layout()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap.update_layout)
* [fiftyone.core.plots.utils](fiftyone.core.plots.utils.md)
  * [`parse_scatter_inputs()`](fiftyone.core.plots.utils.md#fiftyone.core.plots.utils.parse_scatter_inputs)
  * [`parse_locations()`](fiftyone.core.plots.utils.md#fiftyone.core.plots.utils.parse_locations)
  * [`parse_lines_inputs()`](fiftyone.core.plots.utils.md#fiftyone.core.plots.utils.parse_lines_inputs)
  * [`best_fit_line()`](fiftyone.core.plots.utils.md#fiftyone.core.plots.utils.best_fit_line)
  * [`load_button_icon()`](fiftyone.core.plots.utils.md#fiftyone.core.plots.utils.load_button_icon)
  * [`load_icon()`](fiftyone.core.plots.utils.md#fiftyone.core.plots.utils.load_icon)
  * [`serialize_icon()`](fiftyone.core.plots.utils.md#fiftyone.core.plots.utils.serialize_icon)
  * [`pad_icon()`](fiftyone.core.plots.utils.md#fiftyone.core.plots.utils.pad_icon)
* [fiftyone.core.plots.views](fiftyone.core.plots.views.md)
  * [`PlotlyViewPlot`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.PlotlyViewPlot)
    * [`PlotlyViewPlot.show()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.PlotlyViewPlot.show)
    * [`PlotlyViewPlot.connect()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.PlotlyViewPlot.connect)
    * [`PlotlyViewPlot.disconnect()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.PlotlyViewPlot.disconnect)
    * [`PlotlyViewPlot.freeze()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.PlotlyViewPlot.freeze)
    * [`PlotlyViewPlot.is_connected`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.PlotlyViewPlot.is_connected)
    * [`PlotlyViewPlot.is_disconnected`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.PlotlyViewPlot.is_disconnected)
    * [`PlotlyViewPlot.is_frozen`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.PlotlyViewPlot.is_frozen)
    * [`PlotlyViewPlot.link_type`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.PlotlyViewPlot.link_type)
    * [`PlotlyViewPlot.reset()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.PlotlyViewPlot.reset)
    * [`PlotlyViewPlot.save()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.PlotlyViewPlot.save)
    * [`PlotlyViewPlot.supports_session_updates`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.PlotlyViewPlot.supports_session_updates)
    * [`PlotlyViewPlot.update_view()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.PlotlyViewPlot.update_view)
  * [`ViewGrid`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.ViewGrid)
    * [`ViewGrid.connect()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.ViewGrid.connect)
    * [`ViewGrid.disconnect()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.ViewGrid.disconnect)
    * [`ViewGrid.freeze()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.ViewGrid.freeze)
    * [`ViewGrid.is_connected`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.ViewGrid.is_connected)
    * [`ViewGrid.is_disconnected`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.ViewGrid.is_disconnected)
    * [`ViewGrid.is_frozen`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.ViewGrid.is_frozen)
    * [`ViewGrid.link_type`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.ViewGrid.link_type)
    * [`ViewGrid.reset()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.ViewGrid.reset)
    * [`ViewGrid.save()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.ViewGrid.save)
    * [`ViewGrid.show()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.ViewGrid.show)
    * [`ViewGrid.supports_session_updates`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.ViewGrid.supports_session_updates)
    * [`ViewGrid.update_view()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.ViewGrid.update_view)
  * [`CategoricalHistogram`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.CategoricalHistogram)
    * [`CategoricalHistogram.connect()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.CategoricalHistogram.connect)
    * [`CategoricalHistogram.disconnect()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.CategoricalHistogram.disconnect)
    * [`CategoricalHistogram.freeze()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.CategoricalHistogram.freeze)
    * [`CategoricalHistogram.is_connected`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.CategoricalHistogram.is_connected)
    * [`CategoricalHistogram.is_disconnected`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.CategoricalHistogram.is_disconnected)
    * [`CategoricalHistogram.is_frozen`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.CategoricalHistogram.is_frozen)
    * [`CategoricalHistogram.link_type`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.CategoricalHistogram.link_type)
    * [`CategoricalHistogram.reset()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.CategoricalHistogram.reset)
    * [`CategoricalHistogram.save()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.CategoricalHistogram.save)
    * [`CategoricalHistogram.show()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.CategoricalHistogram.show)
    * [`CategoricalHistogram.supports_session_updates`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.CategoricalHistogram.supports_session_updates)
    * [`CategoricalHistogram.update_view()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.CategoricalHistogram.update_view)
  * [`NumericalHistogram`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.NumericalHistogram)
    * [`NumericalHistogram.connect()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.NumericalHistogram.connect)
    * [`NumericalHistogram.disconnect()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.NumericalHistogram.disconnect)
    * [`NumericalHistogram.freeze()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.NumericalHistogram.freeze)
    * [`NumericalHistogram.is_connected`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.NumericalHistogram.is_connected)
    * [`NumericalHistogram.is_disconnected`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.NumericalHistogram.is_disconnected)
    * [`NumericalHistogram.is_frozen`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.NumericalHistogram.is_frozen)
    * [`NumericalHistogram.link_type`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.NumericalHistogram.link_type)
    * [`NumericalHistogram.reset()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.NumericalHistogram.reset)
    * [`NumericalHistogram.save()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.NumericalHistogram.save)
    * [`NumericalHistogram.show()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.NumericalHistogram.show)
    * [`NumericalHistogram.supports_session_updates`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.NumericalHistogram.supports_session_updates)
    * [`NumericalHistogram.update_view()`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.NumericalHistogram.update_view)

## Module contents

Plotting framework.

Copyright 2017-2026, Voxel51, Inc.
<br/>
[voxel51.com](https://voxel51.com/)
<br/>
<br/>

**Functions:**

| [`plot_confusion_matrix`](#fiftyone.core.plots.plot_confusion_matrix)(confusion_matrix, labels)   | Plots a confusion matrix.                                                                                                 |
|---------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------|
| [`plot_regressions`](#fiftyone.core.plots.plot_regressions)(ytrue, ypred[, samples, ...])         | Plots the given regression results.                                                                                       |
| [`plot_pr_curve`](#fiftyone.core.plots.plot_pr_curve)(precision, recall[, ...])                   | Plots a precision-recall (PR) curve.                                                                                      |
| [`plot_pr_curves`](#fiftyone.core.plots.plot_pr_curves)(precisions, recall, classes)              | Plots a set of per-class precision-recall (PR) curves.                                                                    |
| [`plot_roc_curve`](#fiftyone.core.plots.plot_roc_curve)(fpr, tpr[, thresholds, ...])              | Plots a receiver operating characteristic (ROC) curve.                                                                    |
| [`lines`](#fiftyone.core.plots.lines)([x, y, samples, ids, link_field, ...])                      | Plots the given lines(s) data.                                                                                            |
| [`scatterplot`](#fiftyone.core.plots.scatterplot)(points[, samples, ids, ...])                    | Generates an interactive scatterplot of the given points.                                                                 |
| [`location_scatterplot`](#fiftyone.core.plots.location_scatterplot)([locations, samples, ...])    | Generates an interactive scatterplot of the given location coordinates with a map rendered in the background of the plot. |

**Classes:**

| [`Plot`](#fiftyone.core.plots.Plot)()                                                           | Base class for all plots.                                                                                                                                                                                                                                                        |
|-------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [`ResponsivePlot`](#fiftyone.core.plots.ResponsivePlot)(link_type)                              | Base class for all responsive plots that can push/pull updates to a linked object.                                                                                                                                                                                               |
| [`InteractivePlot`](#fiftyone.core.plots.InteractivePlot)([link_type, init_view, ...])          | Base class for plots that support selection of their points.                                                                                                                                                                                                                     |
| [`ViewPlot`](#fiftyone.core.plots.ViewPlot)([init_view])                                        | Base class for plots that can be automatically populated given a [`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection) instance.                                                                               |
| [`PlotManager`](#fiftyone.core.plots.PlotManager)(session)                                      | Class that manages communication between a [`fiftyone.core.session.Session`](fiftyone.core.session.md#fiftyone.core.session.Session) and one or more [`fiftyone.core.plots.base.ResponsivePlot`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ResponsivePlot) instances. |
| [`ViewGrid`](#fiftyone.core.plots.ViewGrid)(plots[, shape, hgap, vgap, init_view])              | A grid of `PlotlyViewPlot` instances.                                                                                                                                                                                                                                            |
| [`CategoricalHistogram`](#fiftyone.core.plots.CategoricalHistogram)(field_or_expr[, expr, ...]) | A histogram of a categorial field.                                                                                                                                                                                                                                               |
| [`NumericalHistogram`](#fiftyone.core.plots.NumericalHistogram)(field_or_expr[, expr, ...])     | A histogram of a numerical field.                                                                                                                                                                                                                                                |

### fiftyone.core.plots.plot_confusion_matrix(confusion_matrix, labels, ids=None, samples=None, eval_key=None, gt_field=None, pred_field=None, backend='plotly', \*\*kwargs)

Plots a confusion matrix.

If `ids` are provided and you are working in a notebook environment with
the default plotly backend, this method returns an interactive
[`fiftyone.core.plots.plotly.InteractiveHeatmap`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap) that you can attach
to an App session via its [`fiftyone.core.session.Session.plots`](fiftyone.core.session.md#fiftyone.core.session.Session.plots)
attribute, which will automatically sync the session’s view with the
currently selected cells in the confusion matrix.

* **Parameters:**
  * **confusion_matrix** – a `num_true x num_preds` confusion matrix
  * **labels** – a `max(num_true, num_preds)` array-like of class labels
  * **ids** (*None*) – an array-like of same shape as `confusion_matrix`
    containing lists of IDs corresponding to each cell
  * **samples** (*None*) – the [`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection)
    for which the confusion matrix was generated
  * **eval_key** (*None*) – the evaluation key of the evaluation
  * **gt_field** (*None*) – the name of the ground truth field
  * **pred_field** (*None*) – the name of the predictions field
  * **backend** ( *"plotly"*) – the plotting backend to use. Supported values are
    `("plotly", "matplotlib")`
  * **\*\*kwargs** – 

    keyword arguments for the backend plotting method:
    - ”plotly” backend: [`fiftyone.core.plots.plotly.plot_confusion_matrix()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.plot_confusion_matrix)
    - ”matplotlib” backend: [`fiftyone.core.plots.matplotlib.plot_confusion_matrix()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.plot_confusion_matrix)
* **Returns:**
  one of the following
  - a [`fiftyone.core.plots.plotly.InteractiveHeatmap`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveHeatmap), if IDs
    are available and the plotly backend is used
  - a [`fiftyone.core.plots.plotly.PlotlyNotebookPlot`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyNotebookPlot), if no IDs
    are available but you are working in a Jupyter notebook with the
    plotly backend
  - a plotly or matplotlib figure, otherwise

### fiftyone.core.plots.plot_regressions(ytrue, ypred, samples=None, ids=None, labels=None, sizes=None, classes=None, gt_field=None, pred_field=None, backend='plotly', \*\*kwargs)

Plots the given regression results.

If IDs are provided and you are working in a notebook environment with the
default plotly backend, this method returns an interactive
[`fiftyone.core.plots.plotly.InteractiveScatter`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter) that you can attach
to an App session via its [`fiftyone.core.session.Session.plots`](fiftyone.core.session.md#fiftyone.core.session.Session.plots)
attribute, which will automatically sync the session’s view with the
currently selected points in the plot.

* **Parameters:**
  * **ytrue** – an array-like of ground truth values
  * **ypred** – an array-like of predicted values
  * **samples** (*None*) – the [`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection)
    for which the results were generated. Only used by the “plotly”
    backend when IDs are provided
  * **ids** (*None*) – an array-like of sample or frame IDs corresponding to the
    regressions. If not provided but `samples` are provided, the
    appropriate IDs will be extracted from the samples
  * **labels** (*None*) – 

    data to use to color the points. Can be any of the
    following:
    - the name of a sample field or `embedded.field.name` of
      `samples` from which to extract numeric or string values
    - a [`fiftyone.core.expressions.ViewExpression`](fiftyone.core.expressions.md#fiftyone.core.expressions.ViewExpression) defining
      numeric or string values to compute from `samples` via
      [`fiftyone.core.collections.SampleCollection.values()`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection.values)
    - an array-like of numeric or string values
    - a list of array-likes of numeric or string values, if
      `link_field` refers to frames
  * **sizes** (*None*) – 

    data to use to scale the sizes of the points. Can be any
    of the following:
    - the name of a sample field or `embedded.field.name` of
      `samples` from which to extract numeric values
    - a [`fiftyone.core.expressions.ViewExpression`](fiftyone.core.expressions.md#fiftyone.core.expressions.ViewExpression) defining
      numeric values to compute from `samples` via
      [`fiftyone.core.collections.SampleCollection.values()`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection.values)
    - an array-like of numeric values
    - a list of array-likes of numeric or string values, if
      `link_field` refers to frames
  * **classes** (*None*) – a list of classes whose points to plot. Only applicable
    when `labels` contains strings
  * **gt_field** (*None*) – the name of the ground truth field
  * **pred_field** (*None*) – the name of the predictions field
  * **backend** ( *"plotly"*) – the plotting backend to use. Supported values are
    `("plotly", "matplotlib")`
  * **\*\*kwargs** – 

    keyword arguments for the backend plotting method:
    - ”plotly” backend: [`fiftyone.core.plots.plotly.plot_confusion_matrix()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.plot_confusion_matrix)
    - ”matplotlib” backend: [`fiftyone.core.plots.matplotlib.plot_confusion_matrix()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.plot_confusion_matrix)
* **Returns:**
  one of the following
  - a [`fiftyone.core.plots.plotly.InteractiveScatter`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.InteractiveScatter), if IDs
    are available and the plotly backend is used
  - a [`fiftyone.core.plots.plotly.PlotlyNotebookPlot`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyNotebookPlot), if no IDs
    are available but you are working in a Jupyter notebook with the
    plotly backend
  - a plotly or matplotlib figure, otherwise

### fiftyone.core.plots.plot_pr_curve(precision, recall, thresholds=None, label=None, backend='plotly', \*\*kwargs)

Plots a precision-recall (PR) curve.

* **Parameters:**
  * **precision** – an array-like of precision values
  * **recall** – an array-like of recall values
  * **thresholds** (*None*) – an array-like of decision thresholds
  * **label** (*None*) – a label for the curve
  * **backend** ( *"plotly"*) – the plotting backend to use. Supported values are
    `("plotly", "matplotlib")`
  * **\*\*kwargs** – 

    keyword arguments for the backend plotting method:
    - ”plotly” backend: [`fiftyone.core.plots.plotly.plot_pr_curve()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.plot_pr_curve)
    - ”matplotlib” backend: [`fiftyone.core.plots.matplotlib.plot_pr_curve()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.plot_pr_curve)
* **Returns:**
  one of the following
  - a [`fiftyone.core.plots.plotly.PlotlyNotebookPlot`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyNotebookPlot), if you
    are working in a Jupyter notebook and the plotly backend is used
  - a plotly or matplotlib figure, otherwise

### fiftyone.core.plots.plot_pr_curves(precisions, recall, classes, thresholds=None, backend='plotly', \*\*kwargs)

Plots a set of per-class precision-recall (PR) curves.

* **Parameters:**
  * **precisions** – a `num_classes x num_recalls` array-like of per-class
    precision values
  * **recall** – an array-like of recall values
  * **classes** – the list of classes
  * **thresholds** (*None*) – an `num_classes x num_recalls` array-like of
    decision thresholds
  * **backend** ( *"plotly"*) – the plotting backend to use. Supported values are
    `("plotly", "matplotlib")`
  * **\*\*kwargs** – 

    keyword arguments for the backend plotting method:
    - ”plotly” backend: [`fiftyone.core.plots.plotly.plot_pr_curves()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.plot_pr_curves)
    - ”matplotlib” backend: [`fiftyone.core.plots.matplotlib.plot_pr_curves()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.plot_pr_curves)
* **Returns:**
  one of the following
  - a [`fiftyone.core.plots.plotly.PlotlyNotebookPlot`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyNotebookPlot), if you
    are working in a Jupyter notebook and the plotly backend is used
  - a plotly or matplotlib figure, otherwise

### fiftyone.core.plots.plot_roc_curve(fpr, tpr, thresholds=None, roc_auc=None, backend='plotly', \*\*kwargs)

Plots a receiver operating characteristic (ROC) curve.

* **Parameters:**
  * **fpr** – an array-like of false positive rates
  * **tpr** – an array-like of true positive rates
  * **thresholds** (*None*) – an array-like of decision thresholds
  * **roc_auc** (*None*) – the area under the ROC curve
  * **backend** ( *"plotly"*) – the plotting backend to use. Supported values are
    `("plotly", "matplotlib")`
  * **\*\*kwargs** – 

    keyword arguments for the backend plotting method:
    - ”plotly” backend: [`fiftyone.core.plots.plotly.plot_roc_curve()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.plot_roc_curve)
    - ”matplotlib” backend: [`fiftyone.core.plots.matplotlib.plot_roc_curve()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.plot_roc_curve)
* **Returns:**
  one of the following
  - a [`fiftyone.core.plots.plotly.PlotlyNotebookPlot`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyNotebookPlot), if you
    are working in a Jupyter notebook and the plotly backend is used
  - a plotly or matplotlib figure, otherwise

### fiftyone.core.plots.lines(x=None, y=None, samples=None, ids=None, link_field=None, sizes=None, backend='plotly', \*\*kwargs)

Plots the given lines(s) data.

You can attach plots generated by this method to an App session via its
[`fiftyone.core.session.Session.plots`](fiftyone.core.session.md#fiftyone.core.session.Session.plots) attribute, which will
automatically sync the session’s view with the currently selected points in
the plot. To enable this functionality, you must pass `samples` to this
method.

You can use the `sizes` parameter to scale the sizes of the points.

* **Parameters:**
  * **x** (*None*) – 

    the x data to plot. Can be any of the following:
    - an array-like of values
    - a `num_lines x n` array-like or list of length `num_lines`
      of array-likes of values for multiple line traces
    - the name of a sample field or `embedded.field.name` of
      `samples` from which to extract values for a single line
    - the name of a frame field or `frames.embedded.field.name` of
      `samples` from which to extract values for per-sample line
      traces
    - a [`fiftyone.core.expressions.ViewExpression`](fiftyone.core.expressions.md#fiftyone.core.expressions.ViewExpression) that
      resolves to a list (one line plot) or list of lists (multiple
      line plots) of numeric values to compute from `samples` via
      [`fiftyone.core.collections.SampleCollection.values()`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection.values)
  * **y** (*None*) – 

    the y data to plot. Can be any of the following:
    - an array-like of values
    - a `num_lines x n` array-like or list of length `num_lines`
      of array-likes of values for multiple line traces
    - the name of a sample field or `embedded.field.name` of
      `samples` from which to extract values for a single line
    - the name of a frame field or `frames.embedded.field.name` of
      `samples` from which to extract values for per-sample line
      traces
    - a [`fiftyone.core.expressions.ViewExpression`](fiftyone.core.expressions.md#fiftyone.core.expressions.ViewExpression) that
      resolves to a list (one line plot) or list of lists (multiple
      line plots) of numeric values to compute from `samples` via
      [`fiftyone.core.collections.SampleCollection.values()`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection.values)
  * **samples** (*None*) – the [`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection)
    whose data is being visualized
  * **ids** (*None*) – an array-like of IDs of same shape as `y`. If not
    provided but `samples` are provided, the appropriate IDs will be
    extracted from the samples
  * **link_field** (*None*) – 

    a field of `samples` whose data corresponds to
    `y`. Can be any of the following:
    - `None`, if the line data correspond to samples (single trace)
      or frames (multiple traces)
    - `"frames"`, if the line data correspond to frames (multiple
      traces). This option exists only for consistency with other
      plotting methods; in practice, it will be automatically
      inferred whenever multiple traces are being plotted
    - the name of a [`fiftyone.core.labels.Label`](fiftyone.core.labels.md#fiftyone.core.labels.Label) field, if the
      line data correspond to the labels in this field
  * **sizes** (*None*) – 

    data to use to scale the sizes of the points. Can be any
    of the following:
    - an array-like of numeric values of same shape as `y`
    - the name of a sample field (single trace) or frame field
      (multiple traces) from which to extract numeric values
    - a [`fiftyone.core.expressions.ViewExpression`](fiftyone.core.expressions.md#fiftyone.core.expressions.ViewExpression) defining
      sample-level (single trace) or frame-level (multiple traces)
      numeric values to compute from `samples` via
      [`fiftyone.core.collections.SampleCollection.values()`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection.values)
  * **backend** ( *"plotly"*) – the plotting backend to use. Supported values are
    `("plotly", "matplotlib")`
  * **\*\*kwargs** – 

    keyword arguments for the backend plotting method:
    - ”plotly” backend: [`fiftyone.core.plots.plotly.lines()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.lines)
    - ”matplotlib” backend: [`fiftyone.core.plots.matplotlib.lines()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.lines)
* **Returns:**
  one of the following
  - an [`InteractivePlot`](#fiftyone.core.plots.InteractivePlot), if IDs are available
  - a [`fiftyone.core.plots.plotly.PlotlyNotebookPlot`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyNotebookPlot), if IDs
    are not available but you are working with the plotly backend in a
    Jupyter notebook
  - a plotly or matplotlib figure, otherwise

### fiftyone.core.plots.scatterplot(points, samples=None, ids=None, link_field=None, labels=None, sizes=None, classes=None, backend='plotly', \*\*kwargs)

Generates an interactive scatterplot of the given points.

You can attach plots generated by this method to an App session via its
[`fiftyone.core.session.Session.plots`](fiftyone.core.session.md#fiftyone.core.session.Session.plots) attribute, which will
automatically sync the session’s view with the currently selected points in
the plot. To enable this functionality, you must pass `samples` to this
method.

This method supports 2D or 3D visualizations, but interactive point
selection is only available in 2D.

You can use the `labels` parameters to define a coloring for the points,
and you can use the `sizes` parameter to scale the sizes of the points.

* **Parameters:**
  * **points** – a `num_points x num_dims` array-like of points
  * **samples** (*None*) – the [`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection)
    whose data is being visualized
  * **ids** (*None*) – an array-like of IDs corresponding to the points. If not
    provided but `samples` are provided, the appropriate IDs will be
    extracted from the samples
  * **link_field** (*None*) – 

    a field of `samples` whose data corresponds to
    `points`. Can be any of the following:
    - None, if the points correspond to samples
    - `"frames"`, if the points correspond to frames
    - the name of a [`fiftyone.core.labels.Label`](fiftyone.core.labels.md#fiftyone.core.labels.Label) field, if the
      points linked to the labels in this field
  * **labels** (*None*) – 

    data to use to color the points. Can be any of the
    following:
    - the name of a sample field or `embedded.field.name` of
      `samples` from which to extract numeric or string values
    - a [`fiftyone.core.expressions.ViewExpression`](fiftyone.core.expressions.md#fiftyone.core.expressions.ViewExpression) defining
      numeric or string values to compute from `samples` via
      [`fiftyone.core.collections.SampleCollection.values()`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection.values)
    - an array-like of numeric or string values
    - a list of array-likes of numeric or string values, if
      `link_field` refers to a label list field like
      [`fiftyone.core.labels.Detections`](fiftyone.core.labels.md#fiftyone.core.labels.Detections)
  * **sizes** (*None*) – 

    data to use to scale the sizes of the points. Can be any
    of the following:
    - the name of a sample field or `embedded.field.name` of
      `samples` from which to extract numeric values
    - a [`fiftyone.core.expressions.ViewExpression`](fiftyone.core.expressions.md#fiftyone.core.expressions.ViewExpression) defining
      numeric values to compute from `samples` via
      [`fiftyone.core.collections.SampleCollection.values()`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection.values)
    - an array-like of numeric values
    - a list of array-likes of numeric or string values, if
      `link_field` refers to a label list field like
      [`fiftyone.core.labels.Detections`](fiftyone.core.labels.md#fiftyone.core.labels.Detections)
  * **classes** (*None*) – an list of classes whose points to plot. Only
    applicable when `labels` contains strings
  * **backend** ( *"plotly"*) – the plotting backend to use. Supported values are
    `("plotly", "matplotlib")`
  * **\*\*kwargs** – 

    keyword arguments for the backend plotting method:
    - ”plotly” backend: [`fiftyone.core.plots.plotly.scatterplot()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.scatterplot)
    - ”matplotlib” backend: [`fiftyone.core.plots.matplotlib.scatterplot()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.scatterplot)
* **Returns:**
  one of the following
  - an [`InteractivePlot`](#fiftyone.core.plots.InteractivePlot), if IDs are available
  - a [`fiftyone.core.plots.plotly.PlotlyNotebookPlot`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyNotebookPlot), if IDs
    are not available but you are working with the plotly backend in a
    Jupyter notebook
  - a plotly or matplotlib figure, otherwise

### fiftyone.core.plots.location_scatterplot(locations=None, samples=None, ids=None, labels=None, sizes=None, classes=None, backend='plotly', \*\*kwargs)

Generates an interactive scatterplot of the given location coordinates
with a map rendered in the background of the plot.

Location data is specified via the `locations` parameter.

You can attach plots generated by this method to an App session via its
[`fiftyone.core.session.Session.plots`](fiftyone.core.session.md#fiftyone.core.session.Session.plots) attribute, which will
automatically sync the session’s view with the currently selected points in
the plot. To enable this functionality, you must pass `samples` to this
method.

You can use the `labels` parameters to define a coloring for the points,
and you can use the `sizes` parameter to scale the sizes of the points.

* **Parameters:**
  * **locations** (*None*) – 

    the location data to plot. Can be any of the
    following:
    - None, in which case `samples` must have a single
      [`fiftyone.core.labels.GeoLocation`](fiftyone.core.labels.md#fiftyone.core.labels.GeoLocation) field whose `point`
      attribute contains location data
    - a `num_locations x 2` array of `(longitude, latitude)`
      coordinates
    - the name of a [`fiftyone.core.labels.GeoLocation`](fiftyone.core.labels.md#fiftyone.core.labels.GeoLocation) field
      of `samples` with `(longitude, latitude)` coordinates in
      its `point` attribute
  * **samples** (*None*) – the [`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection)
    whose data is being visualized
  * **ids** (*None*) – an array-like of IDs corresponding to the locations. If not
    provided but `samples` are provided, the appropriate IDs will be
    extracted from the samples
  * **labels** (*None*) – 

    data to use to color the points. Can be any of the
    following:
    - the name of a sample field or `embedded.field.name` of
      `samples` from which to extract numeric or string values
    - a [`fiftyone.core.expressions.ViewExpression`](fiftyone.core.expressions.md#fiftyone.core.expressions.ViewExpression) defining
      numeric or string values to compute from `samples` via
      [`fiftyone.core.collections.SampleCollection.values()`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection.values)
    - an array-like of numeric or string values
  * **sizes** (*None*) – 

    data to use to scale the sizes of the points. Can be any
    of the following:
    - the name of a sample field or `embedded.field.name` of
      `samples` from which to extract numeric values
    - a [`fiftyone.core.expressions.ViewExpression`](fiftyone.core.expressions.md#fiftyone.core.expressions.ViewExpression) defining
      numeric values to compute from `samples` via
      [`fiftyone.core.collections.SampleCollection.values()`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection.values)
    - an array-like of numeric values
  * **classes** (*None*) – a list of classes whose points to plot. Only applicable
    when `labels` contains strings
  * **backend** ( *"plotly"*) – the plotting backend to use. Supported values are
    `("plotly", "matplotlib")`
  * **\*\*kwargs** – 

    keyword arguments for the backend plotting method:
    - ”plotly” backend: [`fiftyone.core.plots.plotly.location_scatterplot()`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.location_scatterplot)
    - ”matplotlib” backend: [`fiftyone.core.plots.matplotlib.location_scatterplot()`](fiftyone.core.plots.matplotlib.md#fiftyone.core.plots.matplotlib.location_scatterplot)
* **Returns:**
  one of the following
  - an [`InteractivePlot`](#fiftyone.core.plots.InteractivePlot), if IDs are available
  - a [`fiftyone.core.plots.plotly.PlotlyNotebookPlot`](fiftyone.core.plots.plotly.md#fiftyone.core.plots.plotly.PlotlyNotebookPlot), if IDs
    are not available but you are working with the plotly backend in a
    Jupyter notebook
  - a plotly or matplotlib figure, otherwise

### *class* fiftyone.core.plots.Plot

Bases: `object`

Base class for all plots.

**Attributes:**

| [`is_frozen`](#fiftyone.core.plots.Plot.is_frozen)   | Whether this plot is currently frozen.   |
|------------------------------------------------------|------------------------------------------|

**Methods:**

| [`show`](#fiftyone.core.plots.Plot.show)(\*\*kwargs)       | Shows the plot.                                     |
|------------------------------------------------------------|-----------------------------------------------------|
| [`save`](#fiftyone.core.plots.Plot.save)(path, \*\*kwargs) | Saves the plot.                                     |
| [`freeze`](#fiftyone.core.plots.Plot.freeze)()             | Freezes the plot, replacing it with a static image. |

#### *property* is_frozen

Whether this plot is currently frozen.

#### show(\*\*kwargs)

Shows the plot.

* **Parameters:**
  **\*\*kwargs** – subclass-specific keyword arguments

#### save(path, \*\*kwargs)

Saves the plot.

* **Parameters:**
  * **path** – the path to write the plot
  * **\*\*kwargs** – subclass-specific keyword arguments

#### freeze()

Freezes the plot, replacing it with a static image.

Only applicable in notebook contexts.

### *class* fiftyone.core.plots.ResponsivePlot(link_type)

Bases: [`Plot`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.Plot)

Base class for all responsive plots that can push/pull updates to a
linked object.

* **Parameters:**
  **link_type** – the link type of the plot

**Attributes:**

| [`link_type`](#fiftyone.core.plots.ResponsivePlot.link_type)                               | The link type between this plot and a connected session.                     |
|--------------------------------------------------------------------------------------------|------------------------------------------------------------------------------|
| [`supports_session_updates`](#fiftyone.core.plots.ResponsivePlot.supports_session_updates) | Whether this plot supports automatic updates in response to session changes. |
| [`is_connected`](#fiftyone.core.plots.ResponsivePlot.is_connected)                         | Whether this plot is currently connected.                                    |
| [`is_disconnected`](#fiftyone.core.plots.ResponsivePlot.is_disconnected)                   | Whether this plot is currently disconnected.                                 |
| [`is_frozen`](#fiftyone.core.plots.ResponsivePlot.is_frozen)                               | Whether this plot is currently frozen.                                       |

**Methods:**

| [`connect`](#fiftyone.core.plots.ResponsivePlot.connect)()           | Connects this plot, if necessary.                   |
|----------------------------------------------------------------------|-----------------------------------------------------|
| [`show`](#fiftyone.core.plots.ResponsivePlot.show)(\*\*kwargs)       | Shows the plot.                                     |
| [`reset`](#fiftyone.core.plots.ResponsivePlot.reset)()               | Resets the plot to its default state.               |
| [`freeze`](#fiftyone.core.plots.ResponsivePlot.freeze)()             | Freezes the plot, replacing it with a static image. |
| [`disconnect`](#fiftyone.core.plots.ResponsivePlot.disconnect)()     | Disconnects the plot, if necessary.                 |
| [`save`](#fiftyone.core.plots.ResponsivePlot.save)(path, \*\*kwargs) | Saves the plot.                                     |

#### *property* link_type

The link type between this plot and a connected session.

#### *property* supports_session_updates

Whether this plot supports automatic updates in response to session
changes.

#### *property* is_connected

Whether this plot is currently connected.

#### *property* is_disconnected

Whether this plot is currently disconnected.

#### *property* is_frozen

Whether this plot is currently frozen.

#### connect()

Connects this plot, if necessary.

#### show(\*\*kwargs)

Shows the plot.

The plot will be connected if necessary.

* **Parameters:**
  **\*\*kwargs** – subclass-specific keyword arguments

#### reset()

Resets the plot to its default state.

#### freeze()

Freezes the plot, replacing it with a static image.

The plot will also be disconnected.

Only applicable in notebook contexts.

#### disconnect()

Disconnects the plot, if necessary.

#### save(path, \*\*kwargs)

Saves the plot.

* **Parameters:**
  * **path** – the path to write the plot
  * **\*\*kwargs** – subclass-specific keyword arguments

### *class* fiftyone.core.plots.InteractivePlot(link_type='samples', init_view=None, label_fields=None, selection_mode=None, init_fcn=None)

Bases: [`ResponsivePlot`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ResponsivePlot)

Base class for plots that support selection of their points.

Whenever a selection is made in an [`InteractivePlot`](#fiftyone.core.plots.InteractivePlot), the plot will
invoke any selection callback(s) registered on it, reporting to its
listeners the IDs of its selected points.

Conversely, the state of an [`InteractivePlot`](#fiftyone.core.plots.InteractivePlot) can be updated by
external parties by calling its [`select_ids()`](#fiftyone.core.plots.InteractivePlot.select_ids) method.

* **Parameters:**
  * **link_type** ( *"samples"*) – whether this plot is linked to `"samples"`,
    `"frames"`, or `"labels"`
  * **init_view** (*None*) – a [`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection)
    defining an initial view from which to derive selection views when
    points are selected in the plot. This view will also be shown when
    the plot is in its default state (no selection)
  * **label_fields** (*None*) – a label field or list of label fields to which
    points in this plot correspond. Only applicable when
    `link_type == "labels"`
  * **selection_mode** (*None*) – the initial selection mode to use when updating
    connected sessions in response to selections in this plot. See
    [`selection_mode()`](#fiftyone.core.plots.InteractivePlot.selection_mode) for details
  * **init_fcn** (*None*) – a function that can be called with `init_view` as
    its argument that returns a
    [`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection) defining an
    initial view from which to derive certain types of selection views.
    See [`selection_mode()`](#fiftyone.core.plots.InteractivePlot.selection_mode) for details

**Attributes:**

| [`selection_mode`](#fiftyone.core.plots.InteractivePlot.selection_mode)                     | The current selection mode of the plot.                                                                                                                                                                                        |
|---------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [`init_view`](#fiftyone.core.plots.InteractivePlot.init_view)                               | A [`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection) defining the initial view from which to derive selection views when points are selected in the plot. |
| [`selected_ids`](#fiftyone.core.plots.InteractivePlot.selected_ids)                         | A list of IDs of the currently selected points.                                                                                                                                                                                |
| [`is_connected`](#fiftyone.core.plots.InteractivePlot.is_connected)                         | Whether this plot is currently connected.                                                                                                                                                                                      |
| [`is_disconnected`](#fiftyone.core.plots.InteractivePlot.is_disconnected)                   | Whether this plot is currently disconnected.                                                                                                                                                                                   |
| [`is_frozen`](#fiftyone.core.plots.InteractivePlot.is_frozen)                               | Whether this plot is currently frozen.                                                                                                                                                                                         |
| [`link_type`](#fiftyone.core.plots.InteractivePlot.link_type)                               | The link type between this plot and a connected session.                                                                                                                                                                       |
| [`supports_session_updates`](#fiftyone.core.plots.InteractivePlot.supports_session_updates) | Whether this plot supports automatic updates in response to session changes.                                                                                                                                                   |

**Methods:**

| [`recommend_link_type`](#fiftyone.core.plots.InteractivePlot.recommend_link_type)([label_field, samples])     | Recommends a link type for the given info.                                               |
|---------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------|
| [`register_selection_callback`](#fiftyone.core.plots.InteractivePlot.register_selection_callback)(callback)   | Registers a selection callback for this plot.                                            |
| [`register_sync_callback`](#fiftyone.core.plots.InteractivePlot.register_sync_callback)(callback)             | Registers a callback that can sync this plot with a `SessionPlot` connected to it.       |
| [`register_disconnect_callback`](#fiftyone.core.plots.InteractivePlot.register_disconnect_callback)(callback) | Registers a callback that can disconnect this plot from a `SessionPlot` connected to it. |
| [`select_ids`](#fiftyone.core.plots.InteractivePlot.select_ids)(ids[, view])                                  | Selects the points with the given IDs in this plot.                                      |
| [`connect`](#fiftyone.core.plots.InteractivePlot.connect)()                                                   | Connects this plot, if necessary.                                                        |
| [`disconnect`](#fiftyone.core.plots.InteractivePlot.disconnect)()                                             | Disconnects the plot, if necessary.                                                      |
| [`freeze`](#fiftyone.core.plots.InteractivePlot.freeze)()                                                     | Freezes the plot, replacing it with a static image.                                      |
| [`save`](#fiftyone.core.plots.InteractivePlot.save)(path, \*\*kwargs)                                         | Saves the plot.                                                                          |
| [`show`](#fiftyone.core.plots.InteractivePlot.show)(\*\*kwargs)                                               | Shows the plot.                                                                          |
| [`reset`](#fiftyone.core.plots.InteractivePlot.reset)()                                                       | Resets the plot to its default state.                                                    |

#### *property* selection_mode

The current selection mode of the plot.

This property controls how the current view is updated in response to
updates from [`InteractivePlot`](#fiftyone.core.plots.InteractivePlot) instances that are linked to
labels or frames.

When `link_type` is `"frames"`, the supported values are:

- `"select"`: show video samples with labels only for the selected
  frames
- `"match"`: show unfiltered video samples containing at least one
  selected frame
- `"frames"`: show only the selected frames in a frames view

When `link_type` is `"labels"`, the supported values are:

- `"select"`: show only the selected labels
- `"match"`: show unfiltered samples containing at least one
  selected label
- `"patches"`: show the selected labels in a patches view

#### NOTE
In order to use `"patches"` selection mode, you must have
provided an `init_fcn` when constructing this plot that defines
how to create the base patches view. This usually involves
[`to_patches()`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection.to_patches)
or
[`to_evaluation_patches()`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection.to_evaluation_patches)

#### NOTE
In order to use `"frames"` selection mode, you must have
provided an `init_fcn` when constructing this plot that defines
how to create the base frames view. This usually involves
[`to_frames()`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection.to_frames)

#### *property* init_view

A [`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection) defining the
initial view from which to derive selection views when points are
selected in the plot.

This view will also be shown when the plot is in its default state (no
selection).

#### *property* selected_ids

A list of IDs of the currently selected points.

An empty list means all points are deselected, and None means default
state (nothing selected or unselected).

If the plot is not connected, returns None.

#### *static* recommend_link_type(label_field=None, samples=None)

Recommends a link type for the given info.

* **Parameters:**
  * **label_field** (*None*) – the label field, if any
  * **samples** (*None*) – the
    [`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection), if known
* **Returns:**
  a `(link_type, label_fields, selection_mode, init_fcn)` tuple

#### register_selection_callback(callback)

Registers a selection callback for this plot.

Selection callbacks are functions that take a single argument
containing the list of currently selected IDs.

If a selection callback is registered, this plot should invoke it each
time their selection is updated.

* **Parameters:**
  **callback** – a selection callback

#### register_sync_callback(callback)

Registers a callback that can sync this plot with a
`SessionPlot` connected to it.

The typical use case for this function is to serve as the callback for
a `sync` button on the plot.

* **Parameters:**
  **callback** – a function with no arguments

#### register_disconnect_callback(callback)

Registers a callback that can disconnect this plot from a
`SessionPlot` connected to it.

The typical use case for this function is to serve as the callback for
a `disconnect` button on the plot.

* **Parameters:**
  **callback** – a function with no arguments

#### select_ids(ids, view=None)

Selects the points with the given IDs in this plot.

* **Parameters:**
  * **ids** – a list of IDs, or None to reset the plot to its default state
  * **view** (*None*) – the [`fiftyone.core.view.DatasetView`](fiftyone.core.view.md#fiftyone.core.view.DatasetView)
    corresponding to the given IDs, if available

#### connect()

Connects this plot, if necessary.

#### disconnect()

Disconnects the plot, if necessary.

#### freeze()

Freezes the plot, replacing it with a static image.

The plot will also be disconnected.

Only applicable in notebook contexts.

#### *property* is_connected

Whether this plot is currently connected.

#### *property* is_disconnected

Whether this plot is currently disconnected.

#### *property* is_frozen

Whether this plot is currently frozen.

#### *property* link_type

The link type between this plot and a connected session.

#### save(path, \*\*kwargs)

Saves the plot.

* **Parameters:**
  * **path** – the path to write the plot
  * **\*\*kwargs** – subclass-specific keyword arguments

#### show(\*\*kwargs)

Shows the plot.

The plot will be connected if necessary.

* **Parameters:**
  **\*\*kwargs** – subclass-specific keyword arguments

#### *property* supports_session_updates

Whether this plot supports automatic updates in response to session
changes.

#### reset()

Resets the plot to its default state.

### *class* fiftyone.core.plots.ViewPlot(init_view=None)

Bases: [`ResponsivePlot`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ResponsivePlot)

Base class for plots that can be automatically populated given a
[`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection) instance.

The state of [`ViewPlot`](#fiftyone.core.plots.ViewPlot) instances can also be updated by external
parties by calling its [`update_view()`](#fiftyone.core.plots.ViewPlot.update_view) method.

* **Parameters:**
  **init_view** (*None*) – an initial
  [`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection) to load

**Attributes:**

| [`supports_session_updates`](#fiftyone.core.plots.ViewPlot.supports_session_updates)   | Whether this plot supports automatic updates in response to session changes.   |
|----------------------------------------------------------------------------------------|--------------------------------------------------------------------------------|
| [`is_connected`](#fiftyone.core.plots.ViewPlot.is_connected)                           | Whether this plot is currently connected.                                      |
| [`is_disconnected`](#fiftyone.core.plots.ViewPlot.is_disconnected)                     | Whether this plot is currently disconnected.                                   |
| [`is_frozen`](#fiftyone.core.plots.ViewPlot.is_frozen)                                 | Whether this plot is currently frozen.                                         |
| [`link_type`](#fiftyone.core.plots.ViewPlot.link_type)                                 | The link type between this plot and a connected session.                       |

**Methods:**

| [`update_view`](#fiftyone.core.plots.ViewPlot.update_view)(view[, agg_results])   | Updates the plot based on the provided view.        |
|-----------------------------------------------------------------------------------|-----------------------------------------------------|
| [`reset`](#fiftyone.core.plots.ViewPlot.reset)()                                  | Resets the plot to its default state.               |
| [`connect`](#fiftyone.core.plots.ViewPlot.connect)()                              | Connects this plot, if necessary.                   |
| [`disconnect`](#fiftyone.core.plots.ViewPlot.disconnect)()                        | Disconnects the plot, if necessary.                 |
| [`freeze`](#fiftyone.core.plots.ViewPlot.freeze)()                                | Freezes the plot, replacing it with a static image. |
| [`save`](#fiftyone.core.plots.ViewPlot.save)(path, \*\*kwargs)                    | Saves the plot.                                     |
| [`show`](#fiftyone.core.plots.ViewPlot.show)(\*\*kwargs)                          | Shows the plot.                                     |

#### *property* supports_session_updates

Whether this plot supports automatic updates in response to session
changes.

#### update_view(view, agg_results=None)

Updates the plot based on the provided view.

* **Parameters:**
  * **view** – a [`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection)
  * **agg_results** (*None*) – a list of pre-computed aggregation results

#### reset()

Resets the plot to its default state.

#### connect()

Connects this plot, if necessary.

#### disconnect()

Disconnects the plot, if necessary.

#### freeze()

Freezes the plot, replacing it with a static image.

The plot will also be disconnected.

Only applicable in notebook contexts.

#### *property* is_connected

Whether this plot is currently connected.

#### *property* is_disconnected

Whether this plot is currently disconnected.

#### *property* is_frozen

Whether this plot is currently frozen.

#### *property* link_type

The link type between this plot and a connected session.

#### save(path, \*\*kwargs)

Saves the plot.

* **Parameters:**
  * **path** – the path to write the plot
  * **\*\*kwargs** – subclass-specific keyword arguments

#### show(\*\*kwargs)

Shows the plot.

The plot will be connected if necessary.

* **Parameters:**
  **\*\*kwargs** – subclass-specific keyword arguments

### *class* fiftyone.core.plots.PlotManager(session)

Bases: `object`

Class that manages communication between a
[`fiftyone.core.session.Session`](fiftyone.core.session.md#fiftyone.core.session.Session) and one or more
[`fiftyone.core.plots.base.ResponsivePlot`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ResponsivePlot) instances.

Each plot can be linked to either the view, samples, frames, or labels of a
session:

- **View links:** When a plot has `link_type == "view"`, then, when the
  session’s view changes, the plot is updated based on the content of the
  view
- **Sample links:** When points are selected in a plot with
  `link_type == "samples"`, a view containing the corresponding samples
  is loaded in the App. Conversely, when the session’s view changes, the
  corresponding points are selected in the plot
- **Frame links:** When points are selected in a plot with
  `link_type == "frames"`, a view containing the corresponding frames
  is loaded in the App. Conversely, when the session’s view changes, the
  corresponding points are selected in the plot
- **Label links:** When points are selected in a plot with
  `link_type == "labels"`, a view containing the corresponding labels
  is loaded in the App. Conversely, when the session’s view changes, the
  points in the plot corresponding to all labels in the view are selected
  in the plot

* **Parameters:**
  **session** – a [`fiftyone.core.session.Session`](fiftyone.core.session.md#fiftyone.core.session.Session)

**Methods:**

| [`summary`](#fiftyone.core.plots.PlotManager.summary)()                               | Returns a string summary of this manager.                          |
|---------------------------------------------------------------------------------------|--------------------------------------------------------------------|
| [`keys`](#fiftyone.core.plots.PlotManager.keys)()                                     | Returns an iterator over the names of plots in this manager.       |
| [`items`](#fiftyone.core.plots.PlotManager.items)()                                   | Returns an iterator over the `(name, plot)` pairs in this manager. |
| [`values`](#fiftyone.core.plots.PlotManager.values)()                                 | Returns an iterator over the plots in this manager.                |
| [`attach`](#fiftyone.core.plots.PlotManager.attach)(plot[, name, connect, overwrite]) | Attaches a plot to this manager.                                   |
| [`remove`](#fiftyone.core.plots.PlotManager.remove)(name)                             | Removes the plot from this manager.                                |
| [`clear`](#fiftyone.core.plots.PlotManager.clear)()                                   | Removes all plots from this manager.                               |
| [`pop`](#fiftyone.core.plots.PlotManager.pop)(name)                                   | Removes the plot from this manager and returns it.                 |
| [`connect`](#fiftyone.core.plots.PlotManager.connect)()                               | Connects this manager to its session and all plots.                |
| [`disconnect`](#fiftyone.core.plots.PlotManager.disconnect)()                         | Disconnects this manager from its session and all plots.           |
| [`sync`](#fiftyone.core.plots.PlotManager.sync)()                                     | Syncs all connected plots with the session's current view.         |
| [`freeze`](#fiftyone.core.plots.PlotManager.freeze)()                                 | Freezes all connected plots, replacing them with static images.    |

**Attributes:**

| [`is_connected`](#fiftyone.core.plots.PlotManager.is_connected)         | Whether this manager is currently connected to its plots.      |
|-------------------------------------------------------------------------|----------------------------------------------------------------|
| [`is_disconnected`](#fiftyone.core.plots.PlotManager.is_disconnected)   | Whether this manager is currently disconnected from its plots. |
| [`has_view_links`](#fiftyone.core.plots.PlotManager.has_view_links)     | Whether this manager has plots linked to views.                |
| [`has_sample_links`](#fiftyone.core.plots.PlotManager.has_sample_links) | Whether this manager has plots linked to samples.              |
| [`has_frame_links`](#fiftyone.core.plots.PlotManager.has_frame_links)   | Whether this manager has plots linked to frames.               |
| [`has_label_links`](#fiftyone.core.plots.PlotManager.has_label_links)   | Whether this manager has plots linked to labels.               |

#### summary()

Returns a string summary of this manager.

* **Returns:**
  a string summary

#### keys()

Returns an iterator over the names of plots in this manager.

* **Returns:**
  an iterator over plot names

#### items()

Returns an iterator over the `(name, plot)` pairs in this manager.

* **Returns:**
  an iterator that emits `(name, ResponsivePlot)` tuples

#### values()

Returns an iterator over the plots in this manager.

* **Returns:**
  an iterator that emits
  [`fiftyone.core.plots.base.ResponsivePlot`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ResponsivePlot) instances

#### *property* is_connected

Whether this manager is currently connected to its plots.

#### *property* is_disconnected

Whether this manager is currently disconnected from its plots.

#### *property* has_view_links

Whether this manager has plots linked to views.

#### *property* has_sample_links

Whether this manager has plots linked to samples.

#### *property* has_frame_links

Whether this manager has plots linked to frames.

#### *property* has_label_links

Whether this manager has plots linked to labels.

#### attach(plot, name=None, connect=True, overwrite=True)

Attaches a plot to this manager.

* **Parameters:**
  * **plot** – a [`fiftyone.core.plots.base.ResponsivePlot`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ResponsivePlot)
  * **name** (*None*) – an optional name for the plot
  * **connect** (*True*) – whether to immediately connect the plot
  * **overwrite** (*True*) – whether to overwrite an existing plot of the same
    name

#### remove(name)

Removes the plot from this manager.

* **Parameters:**
  **name** – the name of a plot

#### clear()

Removes all plots from this manager.

#### pop(name)

Removes the plot from this manager and returns it.

* **Parameters:**
  **name** – the name of a plot
* **Returns:**
  the [`fiftyone.core.plots.base.ResponsivePlot`](fiftyone.core.plots.base.md#fiftyone.core.plots.base.ResponsivePlot)

#### connect()

Connects this manager to its session and all plots.

#### disconnect()

Disconnects this manager from its session and all plots.

#### sync()

Syncs all connected plots with the session’s current view.

#### freeze()

Freezes all connected plots, replacing them with static images.

Only applicable in notebook contexts.

### *class* fiftyone.core.plots.ViewGrid(plots, shape=None, hgap=None, vgap=None, init_view=None, \*\*kwargs)

Bases: [`PlotlyViewPlot`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.PlotlyViewPlot)

A grid of `PlotlyViewPlot` instances.

* **Parameters:**
  * **plots** – a `PlotlyViewPlot` or iterable of `PlotlyViewPlot`
    instances
  * **shape** (*None*) – the `(rows, cols)` shape to use for the grid
  * **hgap** (*None*) – a horizontal spacing between the subplots, in `[0, 1]`
  * **vgap** (*None*) – a vertical spacing between the subplots, in `[0, 1]`
  * **init_view** (*None*) – an optional initial
    [`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection) to load
  * **\*\*kwargs** – optional parameters for
    [`plotly.graph_objects.Figure.update_layout()`](https://plotly.com/python-api-reference/generated/plotly.graph_objects.html#plotly.graph_objects.Figure.update_layout)

**Methods:**

| [`connect`](#fiftyone.core.plots.ViewGrid.connect)()                            | Connects this plot, if necessary.                   |
|---------------------------------------------------------------------------------|-----------------------------------------------------|
| [`disconnect`](#fiftyone.core.plots.ViewGrid.disconnect)()                      | Disconnects the plot, if necessary.                 |
| [`freeze`](#fiftyone.core.plots.ViewGrid.freeze)()                              | Freezes the plot, replacing it with a static image. |
| [`reset`](#fiftyone.core.plots.ViewGrid.reset)()                                | Resets the plot to its default state.               |
| [`save`](#fiftyone.core.plots.ViewGrid.save)(path[, width, height, scale])      | Saves the plot as an image or HTML.                 |
| [`show`](#fiftyone.core.plots.ViewGrid.show)(\*\*kwargs)                        | Shows this plot.                                    |
| [`update_view`](#fiftyone.core.plots.ViewGrid.update_view)(view[, agg_results]) | Updates the plot based on the provided view.        |

**Attributes:**

| [`is_connected`](#fiftyone.core.plots.ViewGrid.is_connected)                         | Whether this plot is currently connected.                                    |
|--------------------------------------------------------------------------------------|------------------------------------------------------------------------------|
| [`is_disconnected`](#fiftyone.core.plots.ViewGrid.is_disconnected)                   | Whether this plot is currently disconnected.                                 |
| [`is_frozen`](#fiftyone.core.plots.ViewGrid.is_frozen)                               | Whether this plot is currently frozen.                                       |
| [`link_type`](#fiftyone.core.plots.ViewGrid.link_type)                               | The link type between this plot and a connected session.                     |
| [`supports_session_updates`](#fiftyone.core.plots.ViewGrid.supports_session_updates) | Whether this plot supports automatic updates in response to session changes. |

#### connect()

Connects this plot, if necessary.

#### disconnect()

Disconnects the plot, if necessary.

#### freeze()

Freezes the plot, replacing it with a static image.

The plot will also be disconnected.

Only applicable in notebook contexts.

#### *property* is_connected

Whether this plot is currently connected.

#### *property* is_disconnected

Whether this plot is currently disconnected.

#### *property* is_frozen

Whether this plot is currently frozen.

#### *property* link_type

The link type between this plot and a connected session.

#### reset()

Resets the plot to its default state.

#### save(path, width=None, height=None, scale=None, \*\*kwargs)

Saves the plot as an image or HTML.

* **Parameters:**
  * **path** – the path to write the image or HTML
  * **width** (*None*) – a desired width in pixels when saving as an image.
    By default, the layout width is used
  * **height** (*None*) – a desired height in pixels when saving as an image.
    By default, the layout height is used
  * **scale** (*None*) – a scale factor to apply to the layout dimensions. By
    default, this is 1.0
  * **\*\*kwargs** – keyword arguments for
    `plotly:plotly.graph_objects.Figure.to_image()` or
    `plotly:plotly.graph_objects.Figure.write_html()`

#### show(\*\*kwargs)

Shows this plot.

* **Parameters:**
  **\*\*kwargs** – optional parameters for
  [`plotly.graph_objects.Figure.update_layout()`](https://plotly.com/python-api-reference/generated/plotly.graph_objects.html#plotly.graph_objects.Figure.update_layout)

#### *property* supports_session_updates

Whether this plot supports automatic updates in response to session
changes.

#### update_view(view, agg_results=None)

Updates the plot based on the provided view.

* **Parameters:**
  * **view** – a [`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection)
  * **agg_results** (*None*) – a list of pre-computed aggregation results

### *class* fiftyone.core.plots.CategoricalHistogram(field_or_expr, expr=None, order='alphabetical', xlabel=None, log=None, bargap=None, color=None, opacity=None, init_view=None, \*\*kwargs)

Bases: [`PlotlyViewPlot`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.PlotlyViewPlot)

A histogram of a categorial field.

* **Parameters:**
  * **field_or_expr** – a field name, `embedded.field.name`,
    [`fiftyone.core.expressions.ViewExpression`](fiftyone.core.expressions.md#fiftyone.core.expressions.ViewExpression), or
    [MongoDB expression](https://docs.mongodb.com/manual/meta/aggregation-quick-reference/#aggregation-expressions)
    defining the field or expression to plot
  * **expr** (*None*) – 

    an optional
    [`fiftyone.core.expressions.ViewExpression`](fiftyone.core.expressions.md#fiftyone.core.expressions.ViewExpression) or
    [MongoDB expression](https://docs.mongodb.com/manual/meta/aggregation-quick-reference/#aggregation-expressions)
    to apply to `field_or_expr` (which must be a field) before
    plotting
  * **order** ( *"alphabetical"*) – the x-axis ordering strategy to use. Can be
    “alphabetical” to sort by field value, or “frequency” to sort in
    descending order of frequency, or a function suitable for
    `sorted(items, key=order)`, where `items` is a list of
    `(value, count)` tuples
  * **xlabel** (*None*) – an optional x-label for the plot
  * **log** (*False*) – whether to use a log scale y-axis
  * **bargap** (*None*) – relative spacing between bars in `[0, 1]`
  * **color** (*None*) – a color for the bars. Can be any color supported by
    `plotly:plotly.graph_objects.bar.Marker.color()`
  * **opacity** (*None*) – an optional opacity for the bars in `[0, 1]`
  * **init_view** (*None*) – an optional initial
    [`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection) to load
  * **\*\*kwargs** – optional parameters for
    [`plotly.graph_objects.Figure.update_layout()`](https://plotly.com/python-api-reference/generated/plotly.graph_objects.html#plotly.graph_objects.Figure.update_layout)

**Methods:**

| [`connect`](#fiftyone.core.plots.CategoricalHistogram.connect)()                            | Connects this plot, if necessary.                   |
|---------------------------------------------------------------------------------------------|-----------------------------------------------------|
| [`disconnect`](#fiftyone.core.plots.CategoricalHistogram.disconnect)()                      | Disconnects the plot, if necessary.                 |
| [`freeze`](#fiftyone.core.plots.CategoricalHistogram.freeze)()                              | Freezes the plot, replacing it with a static image. |
| [`reset`](#fiftyone.core.plots.CategoricalHistogram.reset)()                                | Resets the plot to its default state.               |
| [`save`](#fiftyone.core.plots.CategoricalHistogram.save)(path[, width, height, scale])      | Saves the plot as an image or HTML.                 |
| [`show`](#fiftyone.core.plots.CategoricalHistogram.show)(\*\*kwargs)                        | Shows this plot.                                    |
| [`update_view`](#fiftyone.core.plots.CategoricalHistogram.update_view)(view[, agg_results]) | Updates the plot based on the provided view.        |

**Attributes:**

| [`is_connected`](#fiftyone.core.plots.CategoricalHistogram.is_connected)                         | Whether this plot is currently connected.                                    |
|--------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------|
| [`is_disconnected`](#fiftyone.core.plots.CategoricalHistogram.is_disconnected)                   | Whether this plot is currently disconnected.                                 |
| [`is_frozen`](#fiftyone.core.plots.CategoricalHistogram.is_frozen)                               | Whether this plot is currently frozen.                                       |
| [`link_type`](#fiftyone.core.plots.CategoricalHistogram.link_type)                               | The link type between this plot and a connected session.                     |
| [`supports_session_updates`](#fiftyone.core.plots.CategoricalHistogram.supports_session_updates) | Whether this plot supports automatic updates in response to session changes. |

#### connect()

Connects this plot, if necessary.

#### disconnect()

Disconnects the plot, if necessary.

#### freeze()

Freezes the plot, replacing it with a static image.

The plot will also be disconnected.

Only applicable in notebook contexts.

#### *property* is_connected

Whether this plot is currently connected.

#### *property* is_disconnected

Whether this plot is currently disconnected.

#### *property* is_frozen

Whether this plot is currently frozen.

#### *property* link_type

The link type between this plot and a connected session.

#### reset()

Resets the plot to its default state.

#### save(path, width=None, height=None, scale=None, \*\*kwargs)

Saves the plot as an image or HTML.

* **Parameters:**
  * **path** – the path to write the image or HTML
  * **width** (*None*) – a desired width in pixels when saving as an image.
    By default, the layout width is used
  * **height** (*None*) – a desired height in pixels when saving as an image.
    By default, the layout height is used
  * **scale** (*None*) – a scale factor to apply to the layout dimensions. By
    default, this is 1.0
  * **\*\*kwargs** – keyword arguments for
    `plotly:plotly.graph_objects.Figure.to_image()` or
    `plotly:plotly.graph_objects.Figure.write_html()`

#### show(\*\*kwargs)

Shows this plot.

* **Parameters:**
  **\*\*kwargs** – optional parameters for
  [`plotly.graph_objects.Figure.update_layout()`](https://plotly.com/python-api-reference/generated/plotly.graph_objects.html#plotly.graph_objects.Figure.update_layout)

#### *property* supports_session_updates

Whether this plot supports automatic updates in response to session
changes.

#### update_view(view, agg_results=None)

Updates the plot based on the provided view.

* **Parameters:**
  * **view** – a [`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection)
  * **agg_results** (*None*) – a list of pre-computed aggregation results

### *class* fiftyone.core.plots.NumericalHistogram(field_or_expr, expr=None, bins=None, range=None, xlabel=None, log=None, color=None, opacity=None, init_view=None, \*\*kwargs)

Bases: [`PlotlyViewPlot`](fiftyone.core.plots.views.md#fiftyone.core.plots.views.PlotlyViewPlot)

A histogram of a numerical field.

* **Parameters:**
  * **field_or_expr** – 

    a field name, `embedded.field.name`,
    [`fiftyone.core.expressions.ViewExpression`](fiftyone.core.expressions.md#fiftyone.core.expressions.ViewExpression), or
    [MongoDB expression](https://docs.mongodb.com/manual/meta/aggregation-quick-reference/#aggregation-expressions)
    defining the field or expression to plot
  * **expr** (*None*) – 

    an optional
    [`fiftyone.core.expressions.ViewExpression`](fiftyone.core.expressions.md#fiftyone.core.expressions.ViewExpression) or
    [MongoDB expression](https://docs.mongodb.com/manual/meta/aggregation-quick-reference/#aggregation-expressions)
    to apply to `field_or_expr` (which must be a field) before
    plotting
  * **bins** (*None*) – can be either an integer number of bins to generate or a
    monotonically increasing sequence specifying the bin edges to use.
    By default, 10 bins are created. If `bins` is an integer and no
    `range` is specified, bin edges are automatically computed from
    the bounds of the field
  * **range** (*None*) – a `(lower, upper)` tuple specifying a range in which to
    generate equal-width bins. Only applicable when `bins` is an
    integer or `None`
  * **xlabel** (*None*) – an optional x-label for the plot
  * **log** (*False*) – whether to use a log scale y-axis
  * **color** (*None*) – a color for the bars. Can be any color supported by
    `plotly:plotly.graph_objects.bar.Marker.color()`
  * **opacity** (*None*) – an optional opacity for the bars in `[0, 1]`
  * **init_view** (*None*) – an optional initial
    [`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection) to load
  * **\*\*kwargs** – optional parameters for
    [`plotly.graph_objects.Figure.update_layout()`](https://plotly.com/python-api-reference/generated/plotly.graph_objects.html#plotly.graph_objects.Figure.update_layout)

**Methods:**

| [`connect`](#fiftyone.core.plots.NumericalHistogram.connect)()                            | Connects this plot, if necessary.                   |
|-------------------------------------------------------------------------------------------|-----------------------------------------------------|
| [`disconnect`](#fiftyone.core.plots.NumericalHistogram.disconnect)()                      | Disconnects the plot, if necessary.                 |
| [`freeze`](#fiftyone.core.plots.NumericalHistogram.freeze)()                              | Freezes the plot, replacing it with a static image. |
| [`reset`](#fiftyone.core.plots.NumericalHistogram.reset)()                                | Resets the plot to its default state.               |
| [`save`](#fiftyone.core.plots.NumericalHistogram.save)(path[, width, height, scale])      | Saves the plot as an image or HTML.                 |
| [`show`](#fiftyone.core.plots.NumericalHistogram.show)(\*\*kwargs)                        | Shows this plot.                                    |
| [`update_view`](#fiftyone.core.plots.NumericalHistogram.update_view)(view[, agg_results]) | Updates the plot based on the provided view.        |

**Attributes:**

| [`is_connected`](#fiftyone.core.plots.NumericalHistogram.is_connected)                         | Whether this plot is currently connected.                                    |
|------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------|
| [`is_disconnected`](#fiftyone.core.plots.NumericalHistogram.is_disconnected)                   | Whether this plot is currently disconnected.                                 |
| [`is_frozen`](#fiftyone.core.plots.NumericalHistogram.is_frozen)                               | Whether this plot is currently frozen.                                       |
| [`link_type`](#fiftyone.core.plots.NumericalHistogram.link_type)                               | The link type between this plot and a connected session.                     |
| [`supports_session_updates`](#fiftyone.core.plots.NumericalHistogram.supports_session_updates) | Whether this plot supports automatic updates in response to session changes. |

#### connect()

Connects this plot, if necessary.

#### disconnect()

Disconnects the plot, if necessary.

#### freeze()

Freezes the plot, replacing it with a static image.

The plot will also be disconnected.

Only applicable in notebook contexts.

#### *property* is_connected

Whether this plot is currently connected.

#### *property* is_disconnected

Whether this plot is currently disconnected.

#### *property* is_frozen

Whether this plot is currently frozen.

#### *property* link_type

The link type between this plot and a connected session.

#### reset()

Resets the plot to its default state.

#### save(path, width=None, height=None, scale=None, \*\*kwargs)

Saves the plot as an image or HTML.

* **Parameters:**
  * **path** – the path to write the image or HTML
  * **width** (*None*) – a desired width in pixels when saving as an image.
    By default, the layout width is used
  * **height** (*None*) – a desired height in pixels when saving as an image.
    By default, the layout height is used
  * **scale** (*None*) – a scale factor to apply to the layout dimensions. By
    default, this is 1.0
  * **\*\*kwargs** – keyword arguments for
    `plotly:plotly.graph_objects.Figure.to_image()` or
    `plotly:plotly.graph_objects.Figure.write_html()`

#### show(\*\*kwargs)

Shows this plot.

* **Parameters:**
  **\*\*kwargs** – optional parameters for
  [`plotly.graph_objects.Figure.update_layout()`](https://plotly.com/python-api-reference/generated/plotly.graph_objects.html#plotly.graph_objects.Figure.update_layout)

#### *property* supports_session_updates

Whether this plot supports automatic updates in response to session
changes.

#### update_view(view, agg_results=None)

Updates the plot based on the provided view.

* **Parameters:**
  * **view** – a [`fiftyone.core.collections.SampleCollection`](fiftyone.core.collections.md#fiftyone.core.collections.SampleCollection)
  * **agg_results** (*None*) – a list of pre-computed aggregation results
