title: Have Bokeh Callback update a list instead of a ColumnDataSource?
body: <p>My question has to do with modifying <a href="http://bokeh.pydata.org/en/latest/docs/user_guide/interaction.html#callbacks-for-selections" rel="nofollow">this</a> example from the Bokeh Gallery.</p>
  
  <p>I have a matrix m or raw data, in which every row corresponds to a pair of x,y coordinates in a transformed space (see #MockData part of code).</p>
  
  <p>The x,y coordinates are plotted on the left plot. I am trying to change the example so that, when I select some points in the left figure, the right figure will display line plots of the corresponding rows. </p>
  
  <p>I've narrowed the problem down to the point, where the right figure will show the desired data as specified by the "indices" list. I cannot, however, figure out how to link the Callback function to the indices list. (Currently the Callback uselessly updates source s2 with the indices.)</p>
  
  <p><em>Code should work when copied:</em></p>
  
  <pre><code>from bokeh.plotting import figure, output_file, show, ColumnDataSource, hplot
  from bokeh.models import HoverTool, Callback, ColumnDataSource
  import pandas as pd
  output_file("Map.html")
  
  # Mock data
  m = np.zeros((6,11))
  for i in range(6):
      for j in range(11):
          m[i,j] = i+j
  x = [0,1,2,3,4,5]; y = [0,2,4,6,8,10]
  m0 = m.transpose()
  m1 = pd.DataFrame(m0, index=['0','1','2','3','4','5','6','7','8','9','10'], columns=[np.arange(0,len(m),1).astype(str)])
  
  #First plot
  s1 = ColumnDataSource(data=dict(x=x,y=y))
  p1 = figure(tools=["lasso_select"], plot_width=600, plot_height=400)
  p1.scatter('x', 'y', fill_color='black', line_color=None, size=10, source=s1)
  
  #Second plot
  s2 = ColumnDataSource(data=dict(z=[]))
  p2 = figure(plot_width=400, plot_height=400)    
  m1 = ColumnDataSource(m1)
  indices = [1,3,4]
  for i in indices:
      p2.line(np.arange(0,11,1), '%s'%i ,  source=m1)
  
  s1.callback = Callback(args=dict(s2=s2), code="""
    var inds = cb_obj.get('selected')['1d'].indices;
    var d2 = s2.get('data');
    d2['z'] = []
    for (i = 0; i &lt; inds.length; i++) {
        d2['z'].push(inds[i])}
    s2.trigger('change'); 
  """)
  
  layout = hplot(p1, p2)
  show(layout)
  </code></pre>
  
  <p>Original question:</p>
  
  <p><em>Working with the example in Bokeh documentation. I am trying to get indices from the selection in the left window and use them to get appropriate row from a matrix with original data and plot the row. 
  In detail:<br/>
  <br/>
  I start with a matrix of values, where each column is a year and each row a location. I run a sklearn Spectral Embedding on the matrix to characterize the data and get a matrix, where each column somehow describes the data. I plot the first 3 columns as x,y coordinates and a color.
  Next I am trying to modify the example such that, when I select some points, the second graph displays their original data (rows) as separate lines. The relevant code mostly taken from the example is below.</em></p>