|
17 | 17 | from plotly.exceptions import PlotlyError
|
18 | 18 |
|
19 | 19 |
|
| 20 | +try: |
| 21 | + import IPython |
| 22 | + _ipython_imported = True |
| 23 | +except ImportError: |
| 24 | + _ipython_imported = False |
| 25 | + |
| 26 | +try: |
| 27 | + import matplotlib |
| 28 | + _matplotlib_imported = True |
| 29 | +except ImportError: |
| 30 | + _matplotlib_imported = False |
| 31 | + |
| 32 | + |
20 | 33 | __PLOTLY_OFFLINE_INITIALIZED = False
|
21 | 34 |
|
22 | 35 |
|
@@ -191,9 +204,7 @@ def plot(figure_or_data,
|
191 | 204 | from plotly.offline import plot
|
192 | 205 | import plotly.graph_objs as go
|
193 | 206 |
|
194 |
| - plot([ |
195 |
| - go.Scatter(x=[1, 2, 3], y=[3, 2 6]) |
196 |
| - ], filename='my-graph.html') |
| 207 | + plot([go.Scatter(x=[1, 2, 3], y=[3, 2, 6])], filename='my-graph.html') |
197 | 208 | ```
|
198 | 209 | More examples below.
|
199 | 210 |
|
@@ -298,3 +309,164 @@ def plot(figure_or_data,
|
298 | 309 | ])
|
299 | 310 | else:
|
300 | 311 | return plot_html
|
| 312 | + |
| 313 | + |
| 314 | +def plot_mpl(mpl_fig, resize=False, strip_style=False, |
| 315 | + verbose=False, show_link=True, link_text='Export to plot.ly', |
| 316 | + validate=True, output_type='file', include_plotlyjs=True, |
| 317 | + filename='temp-plot.html', auto_open=True): |
| 318 | + """ |
| 319 | + Convert a matplotlib figure to a Plotly graph stored locally as HTML. |
| 320 | +
|
| 321 | + For more information on converting matplotlib visualizations to plotly |
| 322 | + graphs, call help(plotly.tools.mpl_to_plotly) |
| 323 | +
|
| 324 | + For more information on creating plotly charts locally as an HTML document |
| 325 | + or string, call help(plotly.offline.plot) |
| 326 | +
|
| 327 | + mpl_fig -- a matplotlib figure object to convert to a plotly graph |
| 328 | +
|
| 329 | + Keyword arguments: |
| 330 | + resize (default=False) -- allow plotly to choose the figure size. |
| 331 | + strip_style (default=False) -- allow plotly to choose style options. |
| 332 | + verbose (default=False) -- print message. |
| 333 | + show_link (default=True) -- display a link in the bottom-right corner of |
| 334 | + of the chart that will export the chart to Plotly Cloud or |
| 335 | + Plotly Enterprise |
| 336 | + link_text (default='Export to plot.ly') -- the text of export link |
| 337 | + validate (default=True) -- validate that all of the keys in the figure |
| 338 | + are valid? omit if your version of plotly.js has become outdated |
| 339 | + with your version of graph_reference.json or if you need to include |
| 340 | + extra, unnecessary keys in your figure. |
| 341 | + output_type ('file' | 'div' - default 'file') -- if 'file', then |
| 342 | + the graph is saved as a standalone HTML file and `plot` |
| 343 | + returns None. |
| 344 | + If 'div', then `plot` returns a string that just contains the |
| 345 | + HTML <div> that contains the graph and the script to generate the |
| 346 | + graph. |
| 347 | + Use 'file' if you want to save and view a single graph at a time |
| 348 | + in a standalone HTML file. |
| 349 | + Use 'div' if you are embedding these graphs in an HTML file with |
| 350 | + other graphs or HTML markup, like a HTML report or an website. |
| 351 | + include_plotlyjs (default=True) -- If True, include the plotly.js |
| 352 | + source code in the output file or string. |
| 353 | + Set as False if your HTML file already contains a copy of the plotly.js |
| 354 | + library. |
| 355 | + filename (default='temp-plot.html') -- The local filename to save the |
| 356 | + outputted chart to. If the filename already exists, it will be |
| 357 | + overwritten. This argument only applies if `output_type` is 'file'. |
| 358 | + auto_open (default=True) -- If True, open the saved file in a |
| 359 | + web browser after saving. |
| 360 | + This argument only applies if `output_type` is 'file'. |
| 361 | +
|
| 362 | + Example: |
| 363 | + ``` |
| 364 | + from plotly.offline import init_notebook_mode, plot_mpl |
| 365 | + import matplotlib.pyplot as plt |
| 366 | +
|
| 367 | + init_notebook_mode() |
| 368 | +
|
| 369 | + fig = plt.figure() |
| 370 | + x = [10, 15, 20, 25, 30] |
| 371 | + y = [100, 250, 200, 150, 300] |
| 372 | + plt.plot(x, y, "o") |
| 373 | +
|
| 374 | + plot_mpl(fig) |
| 375 | + ``` |
| 376 | + """ |
| 377 | + plotly_plot = tools.mpl_to_plotly(mpl_fig, resize, strip_style, verbose) |
| 378 | + return plot(plotly_plot, show_link, link_text, validate, output_type, |
| 379 | + include_plotlyjs, filename, auto_open) |
| 380 | + |
| 381 | + |
| 382 | +def iplot_mpl(mpl_fig, resize=False, strip_style=False, |
| 383 | + verbose=False, show_link=True, |
| 384 | + link_text='Export to plot.ly', validate=True): |
| 385 | + """ |
| 386 | + Convert a matplotlib figure to a plotly graph and plot inside an IPython |
| 387 | + notebook without connecting to an external server. |
| 388 | +
|
| 389 | + To save the chart to Plotly Cloud or Plotly Enterprise, use |
| 390 | + `plotly.plotly.plot_mpl`. |
| 391 | +
|
| 392 | + For more information on converting matplotlib visualizations to plotly |
| 393 | + graphs call `help(plotly.tools.mpl_to_plotly)` |
| 394 | +
|
| 395 | + For more information on plotting plotly charts offline in an Ipython |
| 396 | + notebook call `help(plotly.offline.iplot)` |
| 397 | +
|
| 398 | + mpl_fig -- a matplotlib.figure to convert to a plotly graph |
| 399 | +
|
| 400 | + Keyword arguments: |
| 401 | + resize (default=False) -- allow plotly to choose the figure size. |
| 402 | + strip_style (default=False) -- allow plotly to choose style options. |
| 403 | + verbose (default=False) -- print message. |
| 404 | + show_link (default=True) -- display a link in the bottom-right corner of |
| 405 | + of the chart that will export the chart to Plotly Cloud or |
| 406 | + Plotly Enterprise |
| 407 | + show_link (default=True) -- display a link in the bottom-right corner of |
| 408 | + of the chart that will export the chart to |
| 409 | + Plotly Cloud or Plotly Enterprise |
| 410 | + link_text (default='Export to plot.ly') -- the text of export link |
| 411 | + validate (default=True) -- validate that all of the keys in the figure |
| 412 | + are valid? omit if your version of plotly.js |
| 413 | + has become outdated with your version of |
| 414 | + graph_reference.json or if you need to include |
| 415 | + extra, unnecessary keys in your figure. |
| 416 | +
|
| 417 | + Example: |
| 418 | + ``` |
| 419 | + from plotly.offline import init_notebook_mode, iplot_mpl |
| 420 | + import matplotlib.pyplot as plt |
| 421 | +
|
| 422 | + init_notebook_mode() |
| 423 | +
|
| 424 | + fig = plt.figure() |
| 425 | + x = [10, 15, 20, 25, 30] |
| 426 | + y = [100, 250, 200, 150, 300] |
| 427 | + plt.plot(x, y, "o") |
| 428 | +
|
| 429 | + iplot_mpl(fig) |
| 430 | + ``` |
| 431 | + """ |
| 432 | + plotly_plot = tools.mpl_to_plotly(mpl_fig, resize, strip_style, verbose) |
| 433 | + return iplot(plotly_plot, show_link, link_text, validate) |
| 434 | + |
| 435 | + |
| 436 | +def enable_mpl_offline(resize=False, strip_style=False, |
| 437 | + verbose=False, show_link=True, |
| 438 | + link_text='Export to plot.ly', validate=True): |
| 439 | + """ |
| 440 | + Convert mpl plots to locally hosted HTML documents. |
| 441 | +
|
| 442 | + This function should be used with the inline matplotlib backend |
| 443 | + that ships with IPython that can be enabled with `%pylab inline` |
| 444 | + or `%matplotlib inline`. This works by adding an HTML formatter |
| 445 | + for Figure objects; the existing SVG/PNG formatters will remain |
| 446 | + enabled. |
| 447 | +
|
| 448 | + (idea taken from `mpld3._display.enable_notebook`) |
| 449 | +
|
| 450 | + Example: |
| 451 | + ``` |
| 452 | + from plotly.offline import init_notebook_mode, plotly_takeover |
| 453 | + import matplotlib.pyplot as plt |
| 454 | +
|
| 455 | + init_notebook_mode() |
| 456 | + enable_mpl_offline() |
| 457 | +
|
| 458 | + fig = plt.figure() |
| 459 | + x = [10, 15, 20, 25, 30] |
| 460 | + y = [100, 250, 200, 150, 300] |
| 461 | + plt.plot(x, y, "o") |
| 462 | + fig |
| 463 | + ``` |
| 464 | + """ |
| 465 | + if not __PLOTLY_OFFLINE_INITIALIZED: |
| 466 | + init_notebook_mode() |
| 467 | + ip = IPython.core.getipython.get_ipython() |
| 468 | + formatter = ip.display_formatter.formatters['text/html'] |
| 469 | + formatter.for_type(matplotlib.figure.Figure, |
| 470 | + lambda fig: iplot_mpl(fig, resize, strip_style, verbose, |
| 471 | + show_link, link_text, validate)) |
| 472 | + |
0 commit comments