Create matplotlib and plotly charts with the same few lines of code.
GPL-3.0 License
Create matplotlib
and plotly
charts with the same few lines of code.
It combines the best of the matplotlib
and the plotly
worlds through a unified, flat API.
Switch between matplotlib
and plotly
with the single keyword interactive
. All the necessary boilerplate code to translate between the packages is contained in this module.
Currently supported building blocks:
line
scatter
linescatter
bar
hist
boxplot
heatmap
regression
fill
text
Supported
One line of code
>>> interplot.line([0,4,6,7], [1,2,4,8])
[plotly line figure]
>>> interplot.hist(np.random.normal(40, 8, 1000), interactive=False)
[matplotlib hist figure]
>>> interplot.boxplot(
>>> [
>>> np.random.normal(20, 5, 1000),
>>> np.random.normal(40, 8, 1000),
>>> np.random.normal(60, 5, 1000),
>>> ],
>>> )
[plotly boxplots]
Decorator to auto-initialize plots to use in your methods
>>> @interplot.magic_plot
>>> def plot_my_data(fig=None):
>>> # import and process your data...
>>> data = np.random.normal(2, 3, 1000)
>>> # draw with the fig instance obtained from the decorator function
>>> fig.add_line(data, label="my data")
>>> fig.add_fill((0, 999), (-1, -1), (5, 5), label="sigma")
>>> plot_my_data(title="My Recording")
[plotly figure "My Recording"]
>>> @interplot.magic_plot_preset(interactive=False, title="Preset Title")
>>> def plot_my_data_preconfigured(fig=None):
>>> # import and process your data...
>>> data = np.random.normal(2, 3, 1000)
>>> # draw with the fig instance obtained from the decorator function
>>> fig.add_line(data, label="my data")
>>> fig.add_fill((0, 999), (-1, -1), (5, 5), label="sigma")
>>> plot_my_data_preconfigured()
[matplotlib figure "Preset Title"]
The interplot.Plot
class for full control
>>> fig = interplot.Plot(
>>> interactive=True,
>>> title="Everything Under Control",
>>> fig_size=(800, 500),
>>> rows=1,
>>> cols=2,
>>> shared_yaxes=True,
>>> # ...
>>> )
>>> fig.add_hist(np.random.normal(1, 0.5, 1000), row=0, col=0)
>>> fig.add_boxplot(
>>> [
>>> np.random.normal(20, 5, 1000),
>>> np.random.normal(40, 8, 1000),
>>> np.random.normal(60, 5, 1000),
>>> ],
>>> row=0,
>>> col=1,
>>> )
>>> # ...
>>> fig.post_process()
>>> fig.show()
[plotly figure "Everything Under Control"]
>>> fig.save("export/path/file.html")
saved figure at export/path/file.html
View on NBViewer
:
Try on Binder
:
pip install interplot
git clone https://github.com/janjoch/interplot
cd interplot
pip install -e .
Ideas, bug reports/fixes, feature requests and code submissions are very welcome! Please write to [email protected] or directly into a pull request.