Выбор данных с помощью кнопки

Я хотел бы создать кнопку в блокноте Jupyter, чтобы заменить оператор if, используемый в следующем коде:

from ipywidgets import interact
import ipywidgets as widgets
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from IPython.display import display
import scipy as sci

# I create two dataset
x = np.linspace(0, 2*np.pi, 2000)
y1=np.sin(2*x)
y2=np.sin(4*x)
y3=np.sin(8*x)

f1=np.exp(-x**2)
f2=np.exp(-2*x**2)
f3=np.exp(-3*x**2)

ms=[y1,y2,y3]
mt=[f1,f2,f3]
ms=np.transpose(ms)
mt=np.transpose(mt)
dataset_1=pd.DataFrame(ms)
dataset_2=pd.DataFrame(mt)

control=1 # Selection parameter used in the if condition


# This is the condition that I want to replace by a button
if control==1: 
    data=dataset_1
    data.plot()
    plt.show()

elif control==0:
    data=dataset_2
    data.plot()
    plt.show() 

Здесь я создал два набора данных, состоящих из трех синусов и гауссиан соответственно. Интересно, можно ли использовать такой переключатель:

widgets.RadioButtons(
options=['dataset 1', 'dataset 2'],
description='Switching:',
disabled=False
)

person A.M    schedule 17.08.2018    source источник


Ответы (2)


Возможно, вам просто нужно создать простую функцию с вашим условием и использовать взаимодействие.

from ipywidgets import interact
import ipywidgets as widgets
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from IPython.display import display
import scipy as sci

# I create two dataset
x = np.linspace(0, 2*np.pi, 2000)
y1=np.sin(2*x)
y2=np.sin(4*x)
y3=np.sin(8*x)

f1=np.exp(-x**2)
f2=np.exp(-2*x**2)
f3=np.exp(-3*x**2)

ms=[y1,y2,y3]
mt=[f1,f2,f3]
ms=np.transpose(ms)
mt=np.transpose(mt)
dataset_1=pd.DataFrame(ms)
dataset_2=pd.DataFrame(mt)


def f(Dataset):
    control = Dataset
    if control == 'dataset 1': 
        data=dataset_1
        data.plot()
        plt.show()

    elif control== 'dataset 2':
        data=dataset_2
        data.plot()
        plt.show() 
    return Dataset


interact(f, Dataset = widgets.RadioButtons(
options=['dataset 1', 'dataset 2'],
description='Switching:',
disabled=False))
person It_is_Chris    schedule 17.08.2018

Да, это так. Создайте новую ячейку со следующим кодом:

@interact(control=widgets.RadioButtons(
    options=[1,2],
    description='Dataset'
))
def plot_df(control):
    data = eval('dataset_{}'.format(control))
    data.plot()

введите описание изображения здесь

person jeschwar    schedule 17.08.2018