2017-06-20 2 views
0

Je voudrais définir la couleur d'un tracé de ligne Bokeh (version Bokeh 0.12.5) en utilisant un ColumnDataSource. Cependant, avec un tracé de ligne, rien n'est tracé. D'un autre côté, si j'utilise un moteur de rendu circulaire, tout fonctionne comme prévu. Vous trouverez ci-dessous un exemple de programme comportant à la fois un tracé linéaire et un tracé circulaire. Vous pouvez commenter/décommenter les lignes appropriées pour voir le comportement de tracé. J'ai également inclus une ligne de code pour un tracé de ligne où la couleur est explicitement définie et l'intrigue fonctionne parfaitement. J'ai vu quelques questions similaires posées mais je n'ai pas pu trouver de solution solide à ce problème ou déterminer si je fais quelque chose de fondamentalement faux. Merci de votre aide.Couleur de tracé de ligne Bokeh dans ColumnDataSource

# bokeh version 0.12.5 
# run in terminal with: python -m bokeh serve --show line_plot_color.py 

from bokeh.io import curdoc 
from bokeh.models import ColumnDataSource 
from bokeh.plotting import Figure 
from bokeh.layouts import row 

source = ColumnDataSource(data = dict(color = ['green','green','green'], xs = [1,2,3], ys = [1,2,3])) 
fig = Figure(plot_width=300, plot_height=300) 

#r = fig.circle('xs','ys',source = source, size = 12, fill_color = 'color') # works as expected 
r = fig.line('xs','ys',source = source, line_color = 'color') # fails to plot; no errors or warnings in terminal 
#r = fig.line('xs','ys',source = source, line_color = 'green') # works as expected 

layout = row(fig) 
curdoc().add_root(layout) 

Répondre

0

d'abord pour vous aider avec le débogage du serveur bokeh, il est très utile d'utiliser les devtools qui viennent avec les navigateurs Web. La console devtools contiendra des informations de débogage utiles, comme c'est le cas pour votre exemple. Ensuite, en parcourant les docs, la méthode de glyphe de ligne n'est pas configurée pour recevoir une valeur de source de données de colonne pour sa coloration. Si vous souhaitez tracer plusieurs lignes avec des couleurs différentes sur une seule figure, vous pouvez utiliser le glyphe multi_line. Pour utiliser ce glyphe, vous devez modifier votre source de données xs et ys pour qu'il s'agisse d'une liste de listes pour chaque ligne de votre multiligne. Voici un exemple rapide.

source2 = ColumnDataSource(data = dict(color = ['green','red'], xs = [[1, 2],[2, 4]], ys = [[1, 2],[2, 4]])) 
r = fig.multi_line('xs','ys',source = source2, line_color = 'color')