J'ai Anaconda 3.7 installé sur Windows. Cela fonctionne dans Jupyter mais pas dans Spyder. Ce code:
[49 8 41 29 23] [0.1 0.58 1.06 1.54 2.02 2.5 ] WARNING:root:Histogram: Histogram edges should be supplied as a tuple along with the values, passing the edges will be deprecated in holoviews 2.0.
ne renvoie que les valeurs:
import holoviews as hv import pandas as pd import numpy as np output_notebook () flora = pd.read_csv ('iris.csv') hv.extension('bokeh') frequencies, edges = np.histogram(flora['petal width'], bins = 5) print(frequencies, edges) hv.Histogram(frequencies, edges, label = 'Histogram')
Est-il possible de voir l'histogramme dans Spyder?
3 Réponses :
( Responsable de Spyder ici ) Holoviews produit du contenu à rendre dans un navigateur Web et les consoles Spyder ne sont pas en mesure d'afficher ce contenu pour le moment, désolé.
stackoverflow.com/a/61975403/125507 a une solution
Pour contourner ce problème, vous pouvez ouvrir votre graphique dans votre navigateur en plaçant votre graphique Holoviews dans un objet Panel et en appelant .show ()
dessus.
Le panneau Bibliothèque peut être utilisé pour créer un tableau de bord avec des graphiques Holoviews dans votre navigateur.
Voici un exemple fonctionnel:
import holoviews as hv hv.extension('bokeh') from bokeh.plotting import show show(hv.render(your_holoviews_plot))
Vous pouvez également définir le bokeh comme backend du moteur de rendu, puis utiliser bokeh.render.show ()
. Cela ouvrira votre tracé holoviews dans le navigateur:
# library imports import numpy as np import pandas as pd import holoviews as hv hv.extension('bokeh', logo=False) import panel as pn # create sample data data = np.random.normal(size=[50, 2]) df = pd.DataFrame(data, columns=['col1', 'col2']) # create holoviews graph hv_plot = hv.Points(df) # display graph in browser # a bokeh server is automatically started bokeh_server = pn.Row(hv_plot).show(port=12345) # stop the bokeh server (when needed) bokeh_server.stop()
C'était de loin le moyen le plus rapide d'afficher ma visualisation. Je vous remercie!
@BrianS Je viens d'ajouter une solution alternative supplémentaire. Peut-être que c'est encore plus facile;)
La beauté des holoviews est qu'elle vous permet de choisir entre le bokeh moderne basé sur un navigateur et le bon vieux familier matplotlib pour afficher ses graphiques (ainsi que tracé dans une certaine mesure, principalement pour les tracés 3D).
Spyder est capable de rendre les tracés matplotlib soit en ligne (c'est-à-dire dans la console python elle-même ou depuis leur nouveau panneau de tracés) ou interactivement (c.-à-d. dans une fenêtre pop-up - plusieurs backends existent , parmi tous les qt). Vous pouvez basculer entre ces derniers en tapant % matplotlib inline
ou % matplotlib qt
dans votre console ipython spyder.
Ces backends seront alors l’endroit où votre Les parcelles matplotlib générées par holoview débarquent!
Maintenant, vous devez explicitement dire aux holoviews d'utiliser matplotlib comme backend pour rendre les graphiques (ce que je désigne ci-dessous comme holoview_object peut être ce qu'ils appellent un 'élément' ou une combinaison de ceux-ci: layout, overlay, holomap ...). Vous pouvez le faire en utilisant
hvshow(holoviews_object, 'bokeh')
puis créer une figure matplotlib vide et pirater son gestionnaire pour l'afficher dans votre backend matplotlib par défaut:
%matplotlib qt hvshow(holoviews_object, 'matplotlib')
Vous pouvez utiliser
matplotlib
pour tracer l'histogramme. Lisez ceci@Bazingaa merci pour votre réponse. Je sais que
matplotlib
pourrait le dessiner. J'essaie juste de comprendre comment utiliser PyViz dans Spyder.Il peut être utile de renommer cette question en affichant une sortie HoloViews dans Spyder, car je ne pense pas que ce soit spécifiquement un problème avec les histogrammes.