Jupyter Portable: interactif de la parcelle avec les widgets
Je suis en train de générer un interactive de l'intrigue qui repose sur les widgets.
Le problème que j'ai c'est que quand je change les paramètres à l'aide du curseur, une nouvelle intrigue est fait après la précédente, à la place j'attendrais une seule parcelle de changer selon les paramètres.
Exemple:
from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
def plot_func(freq):
x = np.linspace(0, 2*np.pi)
y = np.sin(x * freq)
plt.plot(x, y)
interact(plot_func, freq = widgets.FloatSlider(value=7.5,
min=1,
max=5.0,
step=0.5))
Après le déplacement du curseur à 4.0, j'ai:
alors que je veux juste un chiffre pour le changement comme je l'ai déplacer le curseur.
Comment puis-je y parvenir?
(J'utilise Python 2.7, matplotlib 2.0 et j'ai juste mis à jour notebook et jupyter à la dernière version. laissez-moi savoir si d'autres infos sont nécessaires).
OriginalL'auteur FLab | 2017-06-02
Vous devez vous connecter pour publier un commentaire.
Que vous souhaitez modifier la figure, au lieu d'en créer un nouveau, puis-je suggérer la manière suivante:
%matplotlib notebook
De sorte que le code pourrait ressembler à quelque chose comme ceci:
Alternativement, vous pouvez utiliser
plt.show()
comme dans cette réponse.line
? en ligneline, = ax.plot(x, np.sin(x))
Voir est-ce la virgule de l'opérateur virgule?
Dès que je clique sur le widget et essayez de glisser, il disparaît. Aucune idée pourquoi? Jupyter info version: La version de l'ordinateur serveur est en 4.3.1 et est en cours d'exécution sur Python 3.6.6, IPython 5.1.0
Je viens de testé avec Python 3.6.6, jupyter de base 4.4.0, ordinateur portable serveur 5.6.0, jupyter_client 5.2.3, jupyter_console 5.2.0, Ipython 6.5.0, ipywidgets 7.4.2 (pas sûr de ce qui est pertinent ici), et il fonctionne comme prévu.
OriginalL'auteur ImportanceOfBeingErnest
C'est une question (?) introduit dans la dernière version de jupyter et/ou ipywidgets. Une solution de contournement que j'ai trouvé a été d'ajouter la ligne
plt.show()
à la fin deplot_func
.La création d'une nouvelle figure pour chaque curseur de mise à jour n'est clairement pas efficace. Votre approche est (+1). J'ai seulement ajouté que cette réponse est elle résout le problème de l' (inefficace) approche de l'OP. TBH, je la trouve inefficace approche plus pratique pour un accès rapide et sale vue d'une fonction de propriétés.
Je vois, peut-être vous ajouter que l'argument de la réponse?
OriginalL'auteur Stelios