Description
In #26414 we splitted the pandas plotting module into a general plotting framework able to call different backends and the current matplotlib backends. The idea is that other backends can be implemented in a simpler way, and be used with a common API by pandas users.
The API defined by the current matplotlib backend includes the objects listed next, but this API can probably be simplified. Here is the list with questions/proposals:
Non-controversial methods to keep in the API (They provide the Series.plot(kind='line')
... functionality):
- LinePlot
- BarPlot
- BarhPlot
- HistPlot
- BoxPlot
- KdePlot
- AreaPlot
- PiePlot
- ScatterPlot
- HexBinPlot
Plotting functions provided in pandas (e.g. pandas.plotting.andrews_curves(df)
)
- andrews_curves
- autocorrelation_plot
- bootstrap_plot
- lag_plot
- parallel_coordinates
- radviz
- scatter_matrix
- table
Should those be part of the API and other backends should also implement them? Would it make sense to convert to the format .plot
(e.g. DataFrame.plot(kind='autocorrelation')
...)? Does it make sense to keep out of the API, or move to a third-party module?
Redundant methods that can possibly be removed:
- hist_series
- hist_frame
- boxplot
- boxplot_frame
- boxplot_frame_groupby
In the case of boxplot
, we currently have several ways of generating a plot (calling mainly the same code):
DataFrame.plot.boxplot()
DataFrame.plot(kind='box')
DataFrame.boxplot()
pandas.plotting.boxplot(df)
Personally, I'd deprecate number 4, and for number 3, deprecate or at least not require a separate boxplot_frame
method in the backend, but try to reuse BoxPlot
(for number 3 comments, same applies to hist
).
For boxplot_frame_groupby
, didn't check in detail, but not sure if BoxPlot
could be reused for this?
Functions to register converters:
- register
- deregister
Do those make sense for other backends?
Deprecated in pandas 0.23, to be removed:
- tsplot
To see what each of these functions do in practise, it may be useful this notebook by @liirusuk: https://github.com/python-sprints/pandas_plotting_library/blob/master/AllPlottingExamples.ipynb
CC: @pandas-dev/pandas-core @tacaswell, @jakevdp, @philippjfr, @PatrikHlobil