Je vais vous montrer comment créer un diagramme sur lequel il est possible de cliquer avec IPython. Le moyen le plus simple est d'utiliser la fonction ʻinteract (ʻIPython.html.widgets.interact
) qui crée automatiquement une interface utilisateur interactive.
Note 1) Une explication un peu plus détaillée que cet article est résumée dans nbviewer comme Comment utiliser Interact, donc si vous êtes intéressé, là Veuillez aussi.
Note 2) Bloc-notes IPython pour cet article peut être téléchargé à partir de nbviewer tel quel. Si vous voulez essayer le dessin interactif facilement, veuillez.
Chargez d'abord le module requis.
from __future__ import print_function
from IPython.html.widgets import interact, interactive, fixed
from IPython.html import widgets
Ensuite, définissez d'abord la fonction que vous souhaitez utiliser de manière interactive.
def f(x):
print(x)
Ensuite, passez la fonction que vous souhaitez utiliser au premier argument de la fonction ʻinteract`, et passez un argument comme celui-ci (abréviation de widget) comme argument de mot-clé. C'est tout. Lorsque vous exécutez le code ci-dessous, un curseur apparaîtra, sur lequel il est amusant de cliquer.
interact(f, x=(-10, 10, 2));
Ainsi, le haut et le bas sont complètement synonymes. Le haut est de savoir comment transmettre l'abréviation du widget et le bas, comment transmettre une instance de widget.
interact(f, x=widgets.IntSliderWidget(min=-10, max=10, step=2, value=0));
Si vous voulez définir la valeur initiale, utilisez ʻinteract` comme décorateur.
@interact(x=(-10, 10, 2))
def g(x=8):
print(x)
Les widgets typiques sont les suivants. «L'argument mot-clé de la fonction interact» est soit un argument similaire à gauche (abréviation de widget), soit une instance du widget à droite.
Argument de mot-clé | Widget |
---|---|
True or False |
CheckboxWidget |
u'Bonjour le monde!' |
TextareaWidget |
Utilisation d'entiersvalue or (min,max) or (min,max,step) |
IntSliderWidget |
Utiliser des nombres réelsvalue or (min,max) or (min,max,step) |
FloatSliderWidget |
('orange','apple') or {'one':1,'two':2} |
DropdownWidget |
Lorsqu'il est combiné avec le dessin, il sera encore plus amusant de cliquer. La figure ci-dessous est une démo qui dessine dynamiquement $ y = A , sin (\ omega x + \ alpha) $. Si vous modifiez les trois paramètres $ A \ in [0.1, 4.0], \ omega \ in [0.1, 4.0], \ alpha \ in [- \ pi, \ pi] $ avec le curseur, le chiffre changera en conséquence. Faire. C'est marrant!
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
@interact(amp=(0.1, 4.0, 0.1), omega=(0.1, 4.0, 0.1), phase=(-np.pi, np.pi, 0.1),
fn = {'sin': np.sin, 'cos': np.cos, 'tan': np.tan})
def h(amp=1.0, omega=1.0, phase=0.0, fn=np.sin):
domain=[-np.pi, np.pi]
x = np.linspace(domain[0], domain[1], 100)
y = amp * fn(omega * x + phase)
plt.plot(x, y)
plt.plot(-phase/omega, 0, 'or')
plt.xlim(domain)
plt.ylim([-4, 4])