Holoviews 示例:如何在 Jupyter Notebook 中显示绘图?
Holoviews example: How to display plot in Jupyter notebook?
我是第一次尝试 Holoviews,我想按照 here.
所述重现这个动画 "Gapminder" 情节
代码运行但我不知道如何处理输出以便它显示在 Jupyter Notebook 中(我认为这是可能的,因为 Jupyter 可以显示任意 HTML)。
# Get HoloViews plot and attach document
doc = curdoc()
hvplot = BokehRenderer.get_plot(hvgapminder, doc)
# Make a bokeh layout and add it as the Document root
plot = layout([[hvplot.state], [slider, button]], sizing_mode='fixed')
doc.add_root(plot)
具体来说,我应该如何处理生成的 doc
或 hvplot
对象?
该特定示例结合了 HoloViews 和散景组件,散景小部件无法轻松地与笔记本中的 Python 通信。但是,您可以使用全息视图 'scrubber' 小部件来实现相同的目的:
import pandas as pd
import numpy as np
import holoviews as hv
from bokeh.sampledata import gapminder
hv.extension('bokeh')
# Switch to sending data 'live' and using the scrubber widget
%output widgets='live' holomap='scrubber'
# Declare dataset
panel = pd.Panel({'Fertility': gapminder.fertility,
'Population': gapminder.population,
'Life expectancy': gapminder.life_expectancy})
gapminder_df = panel.to_frame().reset_index().rename(columns={'minor': 'Year'})
gapminder_df = gapminder_df.merge(gapminder.regions.reset_index(), on='Country')
gapminder_df['Country'] = gapminder_df['Country'].astype('str')
gapminder_df['Group'] = gapminder_df['Group'].astype('str')
gapminder_df.Year = gapminder_df.Year.astype('f')
ds = hv.Dataset(gapminder_df)
# Apply dimension labels and ranges
kdims = ['Fertility', 'Life expectancy']
vdims = ['Country', 'Population', 'Group']
dimensions = {
'Fertility' : dict(label='Children per woman (total fertility)', range=(0, 10)),
'Life expectancy': dict(label='Life expectancy at birth (years)', range=(15, 100)),
'Population': ('population', 'Population')
}
# Create Points plotting fertility vs life expectancy indexed by Year
gapminder_ds = ds.redim(**dimensions).to(hv.Points, kdims, vdims, 'Year')
# Define annotations
text = gapminder_ds.clone({yr: hv.Text(1.2, 25, str(int(yr)), fontsize=30)
for yr in gapminder_ds.keys()})
# Define options
opts = {'plot': dict(width=1000, height=600,tools=['hover'], size_index='Population',
color_index='Group', size_fn=np.sqrt, title_format="{label}"),
'style': dict(cmap='Set1', size=0.3, line_color='black', alpha=0.6)}
text_opts = {'style': dict(text_font_size='52pt', text_color='lightgray')}
# Combine Points and Text
(gapminder_ds({'Points': opts}) * text({'Text': text_opts})).relabel('Gapminder Demo')
我是第一次尝试 Holoviews,我想按照 here.
所述重现这个动画 "Gapminder" 情节代码运行但我不知道如何处理输出以便它显示在 Jupyter Notebook 中(我认为这是可能的,因为 Jupyter 可以显示任意 HTML)。
# Get HoloViews plot and attach document
doc = curdoc()
hvplot = BokehRenderer.get_plot(hvgapminder, doc)
# Make a bokeh layout and add it as the Document root
plot = layout([[hvplot.state], [slider, button]], sizing_mode='fixed')
doc.add_root(plot)
具体来说,我应该如何处理生成的 doc
或 hvplot
对象?
该特定示例结合了 HoloViews 和散景组件,散景小部件无法轻松地与笔记本中的 Python 通信。但是,您可以使用全息视图 'scrubber' 小部件来实现相同的目的:
import pandas as pd
import numpy as np
import holoviews as hv
from bokeh.sampledata import gapminder
hv.extension('bokeh')
# Switch to sending data 'live' and using the scrubber widget
%output widgets='live' holomap='scrubber'
# Declare dataset
panel = pd.Panel({'Fertility': gapminder.fertility,
'Population': gapminder.population,
'Life expectancy': gapminder.life_expectancy})
gapminder_df = panel.to_frame().reset_index().rename(columns={'minor': 'Year'})
gapminder_df = gapminder_df.merge(gapminder.regions.reset_index(), on='Country')
gapminder_df['Country'] = gapminder_df['Country'].astype('str')
gapminder_df['Group'] = gapminder_df['Group'].astype('str')
gapminder_df.Year = gapminder_df.Year.astype('f')
ds = hv.Dataset(gapminder_df)
# Apply dimension labels and ranges
kdims = ['Fertility', 'Life expectancy']
vdims = ['Country', 'Population', 'Group']
dimensions = {
'Fertility' : dict(label='Children per woman (total fertility)', range=(0, 10)),
'Life expectancy': dict(label='Life expectancy at birth (years)', range=(15, 100)),
'Population': ('population', 'Population')
}
# Create Points plotting fertility vs life expectancy indexed by Year
gapminder_ds = ds.redim(**dimensions).to(hv.Points, kdims, vdims, 'Year')
# Define annotations
text = gapminder_ds.clone({yr: hv.Text(1.2, 25, str(int(yr)), fontsize=30)
for yr in gapminder_ds.keys()})
# Define options
opts = {'plot': dict(width=1000, height=600,tools=['hover'], size_index='Population',
color_index='Group', size_fn=np.sqrt, title_format="{label}"),
'style': dict(cmap='Set1', size=0.3, line_color='black', alpha=0.6)}
text_opts = {'style': dict(text_font_size='52pt', text_color='lightgray')}
# Combine Points and Text
(gapminder_ds({'Points': opts}) * text({'Text': text_opts})).relabel('Gapminder Demo')