2016-10-03 2 views
0

Я использую bokeh 0.12.2. У меня есть выбор со словами. Когда я выбираю слово, он должен крутить данные точек. Кажется, что это работает, тогда остановитесь. Я пытаюсь использовать 2 слова, word1 и word2. lastidx полон index.xc, а yx - это местоположение круга, вот код. Это работает с одним, но не очень, если я изменить значение в избранных:select with bokeh действительно не работает

  for j in range(0,2): 
       for i in range(0,len(lastidx[j])): 
        xc.append(tsne_kmeans[lastidx[j][i], 0]) 
        yc.append(tsne_kmeans[lastidx[j][i], 1]) 

     source = ColumnDataSource(data=dict(x=xc, y=yc, s=mstwrd)) 

     def callback(source=source): 
      dat = source.get('data') 
      x, y, s = dat['x'], dat['y'], dat['s'] 

      val = cb_obj.get('value') 

      if val == 'word1': 
       for i in range(0,75): 
        x[i] = x[i] 
        y[i] = y[i] 
      elif val == 'word2': 
       for i in range(76,173): 
        x[i-76] = x[i] 
        y[i-76] = y[i] 

      source.trigger('change') 

     slct = Select(title="Word:", value="word1", options=mstwrd , callback=CustomJS.from_py_func(callback)) 



     # create the circle around the data where the word exist 
     r = plot_kmeans.circle('x','y', source=source) 


     glyph = r.glyph 
     glyph.size = 15 
     glyph.fill_alpha = 0.0 
     glyph.line_color = "black" 
     glyph.line_dash = [4, 2] 
     glyph.line_width = 1 

х и у будут загружены все данные здесь, и я просто выбрать данные для слова я выбираю. Кажется, что он работает, а затем нет. find word

Возможно ли это сделать в качестве отдельной диаграммы? Спасибо

ответ

0

Я понял: код здесь - это просто посмотреть, работает ли это. Конечно, это будет улучшено. И может быть это то, что здесь было написано в конце: https://github.com/bokeh/bokeh/issues/2618

for i in range(0,len(lastidx[0])): 
       xc.append(tsne_kmeans[lastidx[0][i], 0]) 
       yc.append(tsne_kmeans[lastidx[0][i], 1]) 
      addto = len(lastidx[1])-len(lastidx[0]) 
      # here i max out the data which has the least 
      # so when you go from one option to the other it 
      # removes all the previous data circle 
      for i in range(0,addto): 
       xc.append(-16) # just send them somewhere 
       yc.append(16) 
      for i in range(0, len(lastidx[1])): 
       xf.append(tsne_kmeans[lastidx[1][i], 0]) 
       yf.append(tsne_kmeans[lastidx[1][i], 1]) 
     x = xc 
     y = yc 
     source = ColumnDataSource(data=dict(x=x, y=y,xc=xc,yc=yc,xf=xf,yf=yf)) 

     val = "word1" 
     def callback(source=source): 
      dat = source.get('data') 
      x, y,xc,yc,xf,yf = dat['x'], dat['y'], dat['xc'], dat['yc'], dat['xf'], dat['yf'] 
      # if slct.options['value'] == 'growth': 
      val = cb_obj.get('value') 

      if val == 'word1': 
       for i in range(0,len(xc)): 
        x[i] = xc[i] 
        y[i] = yc[i] 
      elif val == 'word2': 
       for i in range(0,len(xf)): 
        x[i] = xf[i] 
        y[i] = yf[i] 

      source.trigger('change') 

     slct = Select(title="Most Used Word:", value=val, options=mstwrd , callback=CustomJS.from_py_func(callback)) 



     # create the circle around the data where the word exist 
     r = plot_kmeans.circle('x','y', source=source) 

Я буду проверять, если я могу передать матрицу. Не забывайте иметь одинаковый размер данных, если вы не будете иметь несколько вариантов, связанных в одно и то же время. Спасибо

Смежные вопросы