عجفت الغور

traitlets in python

, drafts, python

iPython traitlets is a multiuse library that can be used for enforcing specific trait attributes. They also can be used to facilitate quite a bit of communication between different ipywidgets, which is something I learned today.

Specifically, let’s say you have a plot that takes a dataframe in a matplotlib manner, such as bqplot:

import numpy as np
import bqplot.pyplot as plt
import pandas as pd


x = pd.Series(np.linspace(-10, 10, 100)
y = np.sin(x)

fig = plt.figure()
line = plt.plot(x=x, y=y)
fig

Now let’s say you want to have an UI that:

  • displays the entire dataframe as a filterable datagrid
  • gives you options on what to plot against
  • automatically updates the plot based on the filters in the datagrid

You can do this in shockingly few lines of Python using the ipydatagrid, bqplot, traitlets, and Jupyterwidgets.

  • Setup the jupyter dropdowns

  • Setup the datagrid

  • Setup the hook on the “transform” in the datagrid

  • Set the hook to take in the datagrid

  • Update the plot as needed

  • https://github.com/ipython/traitlets