The dp.Plot
block takes a plot object from one of the supported Python visualisation libraries and renders it in your report.
Datapane will automatically wrap your visualization or plot in a dp.Plot
block if you pass it into your report directly.
Datapane currently supports the following libraries:
Library | Site / Docs |
Altair | |
Matplotlib / Seaborn | |
Bokeh | |
Plotly | |
Folium |
Altair is a declarative statistical visualization library for Python, based on Vega and Vega-Lite. Altair’s API is simple, friendly and consistent and built on top of the powerful Vega-Lite visualization grammar. This elegant simplicity produces beautiful and effective visualizations with a minimal amount of code.
To get started using Altair to make your visualizations, begin with Altair's Documentation
import altair as altimport datapane as dpfrom vega_datasets import data as vega_datagap = pd.read_json(vega_data.gapminder.url)select_year = alt.selection_single(name='select', fields=['year'], init={'year': 1955},bind=alt.binding_range(min=1955, max=2005, step=5))alt_chart = alt.Chart(gap).mark_point(filled=True).encode(alt.X('fertility', scale=alt.Scale(zero=False)),alt.Y('life_expect', scale=alt.Scale(zero=False)),alt.Size('pop:Q'),alt.Color('cluster:N'),alt.Order('pop:Q', sort='descending'),).add_selection(select_year).transform_filter(select_year)dp.Report(dp.Plot(alt_chart)).publish(name='time_interval')
Bokeh is an interactive visualization library which provides elegant, concise construction of versatile graphics, and affords high-performance interactivity over large datasets.
To get started using Bokeh to make your visualizations, begin with Bokeh's User Guide.
from bokeh.plotting import figure, output_file, showfrom bokeh.sampledata.iris import flowersimport datapane as dp# Create scatter plot with Bokehcolormap = {'setosa': 'red', 'versicolor': 'green', 'virginica': 'blue'}colors = [colormap[x] for x in flowers['species']]bokeh_chart = figure(title = "Iris Morphology")bokeh_chart.xaxis.axis_label = 'Petal Length'bokeh_chart.yaxis.axis_label = 'Petal Width'bokeh_chart.circle(flowers["petal_length"], flowers["petal_width"],color=colors, fill_alpha=0.2, size=10)# Publish the reportdp.Report(dp.Plot(bokeh_chart)).publish(name='bokeh_plot')
Matplotlib is the original Python visualisation library, often supported and used with Jupyter Notebooks. Matplotlib plots are not interactive in Datapane Reports, but are saved as SVGs so can be viewed at high fidelity.
Higher-level matplotlib libraries such as Seaborn are also supported, and can be used in a similar way to the matplotlib example below,
import matplotlib.pyplot as pltimport pandas as pdimport datapane as dpfrom vega_datasets import data as vega_datagap = pd.read_json(vega_data.gapminder.url)# gap.plot.scatter()fig = gap.plot.scatter(x='life_expect', y='fertility')dp.Report(dp.Plot(fig)).publish(name="test_mpl")
You can pass either a matplotlib
Figure
or Axes
object to dp.Plot
, you can obtain the current global figure from matplotlib
by running plt.gcf()
Plotly's Python graphing library makes interactive, publication-quality graphs.
import plotly.express as pximport datapane as dpdf = px.data.gapminder()plotly_chart = px.scatter(df.query("year==2007"), x="gdpPercap", y="lifeExp",size="pop", color="continent",hover_name="country", log_x=True, size_max=60)plotly_chart.show()dp.Report(dp.Plot(plotly_chart)).publish(name='bubble')
Folium makes it easy to visualize data that’s been manipulated in Python on an interactive leaflet map. It enables both the binding of data to a map for choropleth
visualizations as well as passing rich vector/raster/HTML visualizations as markers on the map.
The library has a number of built-in tilesets from OpenStreetMap, Mapbox, and Stamen, and supports custom tilesets with Mapbox or Cloudmade API keys.
If your folium map consumes live data which expires after a certain time, you can automate it to refresh the map on a cadence. See Automation.
import foliumimport datapane as dpm = folium.Map(location=[45.5236, -122.6750])dp.Report(dp.Plot(m)).publish(name='folium_map')