Note des responsables: cette question n'est plus pertinente. Le module bokeh.objects n'existe pas depuis des années



J'essaie d'exécuter ce script:

#Code will be significantly simplified in the 0.4 release
import time
from bokeh.objects import GlyphRenderer
renderer = [r for r in curplot().renderers if isinstance(r, GlyphRenderer)][0]
ds = renderer.data_source
while True:
    df = pd.io.json.read_json(url+json_call)
    ds.data["x"] = x+N*i
    ds.data["y"] = df.rssi
    ds._dirty = True
    session().store_obj(ds)
    time.sleep(1.5)
    i+=1

De: https://www.continuum.io/content/pireless-streaming-plots- bokeh

Mais à cette ligne:

from bokeh.objects import GlyphRenderer

J'ai eu:

No module named objects

La version que j'utilise est

0.11.1

Sur Linux Mint 17.1

1
Luis Ramon Ramirez Rodriguez 8 mars 2016 à 03:33

4 réponses

Meilleure réponse

Note des responsables: cette réponse n'est plus pertinente. Le module bokeh.objects n'existe pas depuis des années



Avez-vous essayé d'installer bokeh avant d'essayer les exemples? Sinon, lancez simplement:

pip install bokeh

Et essayez à nouveau votre script.


Si cela ne fonctionne pas, il est probable que les sources bokeh aient changé, donc vous pourriez vouloir changer le

from bokeh.objects import GlyphRenderer

Dans

from bokeh.models.renderers import GlyphRenderer

Cf le code source


À la première ligne de votre exemple, il indique:

#Code will be significantly simplified in the 0.4 release

Ce qui signifie que le code de l'exemple était déjà sur le point d'être obsolète au moment de la rédaction du tutoriel.

Ainsi, au lieu de copier / coller ce code, vous devriez essayer de comprendre comment il fonctionne et le recréer à l'aide de la documentation et des sources:

S'amuser!

3
bigreddot 23 nov. 2019 à 05:55

Le module objects a été supprimé dans commit 5b5d28304c5ea209e243af5943917fe494d9ef9c (v0.7.1) après avoir été déconseillé dans 8bb4a2f1f43b39b869c508ef7aee69f7aabb46b8 (v0.7.0). Le message de dépréciation se lit comme suit: "use bokeh.models instead". Je laisse la recherche de GlyphRenderer dans la base de code actuelle comme exercice pour vous.

2
ivan_pozdeev 8 mars 2016 à 01:12

Concernant le streaming (puisque c'est l'exemple qui intéressait l'OP), l'API de streaming actuelle et stable est illustrée ici:

https://github.com/bokeh/bokeh/tree/master/examples/app/ohlc

Cette interface simple a été le moyen de diffuser efficacement vers des sources de données depuis 0.11.1, et continuera à aller de l'avant.

L'idée de base est de construire un dict avec toutes les colonnes d'une source de données, et juste les nouvelles données à ajouter:

# construct a source with x and y columns
source = ColumnDataSource(data=dict(x=[....], y=[....]))

# sends the few new data points to the client, does not re-send all the data
source.stream(dict(x=[10, 11], y=[20, 21]))

En règle générale, vous appelez probablement le flux à partir d'une sorte de rappel périodique. L'application OHLC liée ci-dessus est un exemple complet.

0
bigreddot 27 juil. 2016 à 13:49

conda update bokeh a résolu cela pour moi.

0
RandomCoder 27 juil. 2016 à 08:13