0

What I'm trying to do is the following. I have some function f(m) that I want to explore interactively for different values of m (for example using ipywidgets). For specific values of m, I'd like to store some string containing for example m in a list. However, I don't know beforehand which values those will be; I want to plot f(m), and if I like the result, either choose something like True or False, or select Reject or Approve from a dropdown list, and only then have the value be stored. Clicking A or R on the keyboard would also be fine. Is this something I can do? The best I could come up with was using something like ipywidgets:

%matplotlib inline
from ipywidgets import interactive
import matplotlib.pyplot as plt
import numpy as np

def f(m):
    plt.figure(2)
    x = np.linspace(-10, 10, num=1000)
    ID = str(m)
    plt.plot(x, m * x)
    plt.ylim(-5, 5)
    plt.show()

interactive_plot = interactive(f, m=(-2.0, 2.0))
output = interactive_plot.children[-1]
output.layout.height = '350px'
interactive_plot

In this case, ID is the object I would like to store. I could add an extra argument evaluation which is either Accept or Reject or something like that, and add an if statement to the function that appends a list of values, but that seems like a poor choice. Because changing m won't change the value of evaluation, so varying m would just add the ID to the list for every m as long as evaluation is set to Accept. So then for every value I'd need to set evaluation to Accept or Reject, and then set it back to some value that doesn't do anything like Undetermined, which is a lot of clicks. I am sure there would be a better way of doing so; could someone point me in that direction?

user129412
  • 765
  • 1
  • 6
  • 19

1 Answers1

0

This example is probably overkill for your purposes, but it shows how to use Panel (panel.pyviz.org) to save a set of currently chosen widget values (to a file, in this case): https://anaconda.org/jbednar/datashaderattractors/notebook

James A. Bednar
  • 3,195
  • 1
  • 9
  • 13