Data Science Pencil, dash app for 'drawing' datasets

This is an app I made for creating time series datasets using a visual interface:

I had the idea because quite often I find myself sketching out time series plots to explain some concept, so I thought that it would be nice to do this and then get an actual dataset out of it. You can:

  • Draw variables freehand by clicking on the graph.
  • Add random noise variables.
  • Add correlated variables with a specified correlation coefficient.
  • Interpolate your variables to fill nulls.
  • Download your dataset as CSV or feather.
  • Share your dataset, this saves it to a database and gives you a unique code to load it with.
  • Currently supports daily, monthly or weekly frequency data.

It’s almost all dash (with CSS styling), there’s a bit of javascript since I used a clientside callback to make the clicking functionality snappier (thanks to @adamschroeder for his great youtube tutorial on this!).

Would love to hear any feedback!


Hi @robert_d Robert,
:wave: Welcome to the community. And thank you for the shoutout.

I think your app is awesome and unique. I can’t recall seeing anything similar to your dspencil app.

Filling the variable nulls with cubic interpolation :nail_care:

@robert_d This is intriguing. if you had a video to go with this it could help showcase use cases (and limits)

Thanks for the comments @adamschroeder and @DaveG! A how-to-use video is a good idea, when I can find some time I’ll make one.

As suggested, I’ve added a short how-to-use video:

perfect … thx @robert_d … covered everything nicely … the share option is a nice add-on … and the multiple interpolation options … I wonder how granular a time series / how many points this might be used for

would you see adding two variables (in the app) … e.g. adding a base variable w a noise variable … as presumably could do that outside of the app as well (presuming a 1:1 correlation of time range and intervals)

Hi @DaveG, an option to add variables together is a great suggestion. I had some time so I’ve added that as a feature: ‘add combined variable’. Also added ‘add shifted variable’, which is basically just the pandas ‘shift’ method.

Thanks for the feedback and ideas :smiley:

all good …