3 HoloViews

## holoviews_backend=matplotlib
import holoviews as hv
renderer = hv.renderer('matplotlib')
curve = hv.Curve(([1, 2, 3], [5, 1, 3]))
png, info = renderer(curve, fmt='png')

from IPython.display import display_png
display_png(png, raw=True)

png

from pheasant.jupyter.display import display

display(curve)
'![png](data:image/png;base64,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)'

png

png

df = pd.DataFrame([[1 ,2]])
0 1
0 1 2
def func(x):
    return 5 * x