Je travaille actuellement sur un script Bokeh qui affichera un catalogue de tremblement de terre sur une carte. Jusqu'à présent, j'ai eu peu de problèmes, mais je suis tombé sur quelques questions.Extrait les données sélectionnées dans Bokeh au fichier texte et d'autres questions
1) Je suis tombé sur ce stackoverflow Q & A: Get selected data contained within box select tool in Bokeh, ce qui a été très utile pour apprendre à utiliser CutsomJS pour prendre les données sélectionnées et les sortir. J'ai, cependant, rencontré un peu d'étrangeté. Le script semble seulement fonctionner correctement pour moi dans le cahier de Jupyter. La partie CustomJS se lit comme suit:
source.callback = CustomJS(args=dict(p=p), code="""
var inds = cb_obj.get('selected')['1d'].indices;
var d1 = cb_obj.get('data');
console.log(d1)
var kernel = IPython.notebook.kernel;
IPython.notebook.kernel.execute("inds = " + inds);
Si je l'essaye en cours d'exécution à travers et fenêtre html, la commande suivante n'a pas de sortie:
subset = zip([source.data['xvals'][i] for i in inds],
[source.data['yvals'][i] for i in inds])
subset_array = np.array(subset)
outfile = 'Scripts/subset.xy'
fo = open(outfile,'w')
for i in range(len(subset_array)):
print(subset_array[i,0],subset_array[i,1],file=fo)
fo.close()
Je pourrais utiliser quelques conseils sur la façon d'obtenir les données sélectionnées pour produire une variable, et finalement un fichier texte lors de l'utilisation de html, par opposition à l'ordinateur portable Jupyter.
2) J'ai essayé de créer une légende pour mon intrigue. Les tremblements de terre sont indiqués par des cercles (il s'agit donc d'un tracé circulaire), et les cercles varient en taille en fonction de leur magnitude et de leur couleur en fonction de leur profondeur, que j'ai appris à travailler. Ce que je voudrais faire, c'est montrer des cercles de différentes tailles dans la légende, chacun reflétant des grandeurs différentes (Mag 1, Mag 2, Mag 3, etc.). Voici la commande que j'utilise pour tracer les données:
p.circle("xvals", "yvals",source=source, size="radius", fill_color=transform("depth", mapper),legend = 'Magnitude')
J'ai essayé de déconner avec les commandes de légende, mais il est moi un peu difficile tout pour à Grok, même si je me sens comme cela devrait être un assez simple chose à faire. Je utilise la dernière version de Bokeh (0.12.7) et Python 2.7.12. Merci pour toute aide, et j'apprécie le temps!