web-dev-qa-db-fra.com

Comment empêcher le bokeh d'ouvrir un nouvel onglet dans Jupyter Notebook?

Tout d'abord, avant que cela ne soit marqué comme doublon, j'ai lu les autres solutions et malheureusement aucune d'entre elles n'a fonctionné pour moi.

Mon problème est que je veux afficher un tracé de bokeh dans Juypter Notebook (et uniquement dans Jupyter Notebook), pas dans un nouvel onglet/fenêtre.

Dans la documentation officielle ici on me dit que je n'ai besoin que de changer

output_file

à

output_notebook

Même si l'intrigue est maintenant affichée en ligne si je le fais, le bokeh ne cessera pas également d'ouvrir un nouvel onglet et d'afficher inutilement l'intrigue là-bas.

Puisque je vais créer beaucoup de tracés dans mon projet, il serait très agréable de ne pas toujours avoir à fermer ce nouvel onglet et à revenir au bloc-notes, mais juste à ce qu'il arrête de créer de nouveaux onglets, tout comme cela fonctionnerait avec par exemple matplotlib.

Ce qui m'embrouille, c'est que si je charge le tutoriel officiel et y entre du code, par exemple

import numpy as np

x = np.linspace(0, 10, 100)
y = np.exp(x)

p = figure()
p.line(x, y)

show(p)

aucun nouvel onglet n'est ouvert. Si j'exécute maintenant le même code localement sur le Juypter Notebook de ma machine, il ouvre un nouvel onglet.

J'essaie depuis un certain temps de résoudre ce problème, toute aide serait très appréciée.

Merci d'avance, Vincent

15
pfincent

Vous devez appeler output_notebook en haut de votre bloc-notes, mais niquement appelez output_notebook. Si vous appelez output_file du tout, qui active un mode persistant qui enregistre la sortie dans les fichiers et provoque show pour ouvrir de nouveaux onglets avec ces fichiers. Vous devez appeler reset_output pour effacer ce mode persistant.

Par commodité, puisque plusieurs utilisateurs l'ont demandé, si non le mode de sortie est fourni, show se comporte comme si output_file a été appelé par défaut. La raison pour laquelle un onglet n'est pas ouvert à partir du didacticiel Binder est qu'il n'est pas techniquement possible pour le code s'exécutant à distance sur le serveur Binder d'ouvrir un onglet sur votre navigateur local (ce qui est une très bonne chose).

13
bigreddot

Ajout d'un exemple explicite à @ bigreddot's answer :

Vous avez peut-être exécuté bokeh.io.output_file() quelque part dans votre bloc-notes, pour enregistrer des graphiques notables. Cependant, vous ne voulez maintenant expérimenter rapidement que quelques graphiques pour inspecter les données.

Réinitialisez simplement vos paramètres pour arrêter l'enregistrement dans un fichier dans n'importe quelle cellule de votre ordinateur portable comme ceci:

import bokeh.io
# this is here only for completeness to clarify where
# the methods are nested (you probably already imported this earlier)


bokeh.io.reset_output()
bokeh.io.output_notebook()

Vous pouvez réactiver l'enregistrement dans un fichier plus tard pour conserver les graphiques intéressants.

8
martin-martin