class_docstr: Displays many line strips of equal length, with the option to add new
  vertex data to one end of the lines.
  
  Parameters
  ----------
  n_lines : int
      The number of independent line strips to draw.
  line_size : int
      The number of samples in each line strip.
  dx : float
      The x distance between samples
  color : array-like
      An array of colors to assign to each line strip.
  pos_offset : array-like
      An array of x, y position offsets to apply to each line strip.
  columns : int
      Arrange line strips into a grid with this number of columns. This
      option is not compatible with *pos_offset*.
  cell_size : tuple
      The x, y distance between cells in the grid.
class_docstr_tok: ["Displays","many","line","strips","of","equal","length",",","with","the","option","to","add","new","vertex","data","to","one","end","of","the","lines",".","Parameters","--","--","--","--","--","n_lines",":","int","The","number","of","independent","line","strips","to","draw",".","line_size",":","int","The","number","of","samples","in","each","line","strip",".","dx",":","float","The","x","distance","between","samples","color",":","array-like","An","array","of","colors","to","assign","to","each","line","strip",".","pos_offset",":","array-like","An","array","of","x",",","y","position","offsets","to","apply","to","each","line","strip",".","columns",":","int","Arrange","line","strips","into","a","grid","with","this","number","of","columns",".","This","option","is","not","compatible","with","*","pos_offset","*",".","cell_size",":","tuple","The","x",",","y","distance","between","cells","in","the","grid","."]
docstr: Append new data to the right side of every line strip and remove
  as much data from the left.
  
  Parameters
  ----------
  data : array-like
      A data array to append.
docstr_tok: ["Append","new","data","to","the","right","side","of","every","line","strip","and","remove","as","much","data","from","the","left",".","Parameters","--","--","--","--","--","data",":","array-like","A","data","array","to","append","."]
code: def roll_data(self, data):
      """Append new data to the right side of every line strip and remove
      as much data from the left.
  
      Parameters
      ----------
      data : array-like
          A data array to append.
      """
      data = data.astype("float32")[..., np.newaxis]
      s1 = self._data_shape[1] - self._offset
      if data.shape[1] > s1:
          self._pos_tex[:, self._offset :] = data[:, :s1]
          self._pos_tex[:, : data.shape[1] - s1] = data[:, s1:]
          self._offset = (
              self._offset + data.shape[1]
          ) % self._data_shape[1]
      else:
          self._pos_tex[
              :, self._offset : self._offset + data.shape[1]
          ] = data
          self._offset += data.shape[1]
      self.shared_program["offset"] = self._offset
      self.update()
  
file_path: vispy/vispy/visuals/scrolling_lines.py
imports: import numpy
  from .visual import Visual
  from ..None import gloo
label_desc: Use image node_id 7 for calling the ScrollingLinesVisual obj's underlying member method code with example usage: obj.roll_data(data) without return types