vispy.visuals.scrolling_lines module

class vispy.visuals.scrolling_lines.ScrollingLinesVisual(n_lines, line_size, dx, color=None, pos_offset=None, columns=None, cell_size=None)

Bases: vispy.visuals.visual.Visual

Displays many line strips of equal length, with the option to add new vertex data to one end of the lines.

Parameters
n_linesint

The number of independent line strips to draw.

line_sizeint

The number of samples in each line strip.

dxfloat

The x distance between samples

colorarray-like

An array of colors to assign to each line strip.

pos_offsetarray-like

An array of x, y position offsets to apply to each line strip.

columnsint

Arrange line strips into a grid with this number of columns. This option is not compatible with pos_offset.

cell_sizetuple

The x, y distance between cells in the grid.

fragment_code = '\n    varying vec2 v_index;\n    varying vec4 v_color;\n    \n    void main() {\n        if (v_index.y - floor(v_index.y) > 0) {\n            discard;\n        }\n        gl_FragColor = $color;\n    }\n    '
roll_data(data)

Append new data to the right side of every line strip and remove as much data from the left.

Parameters
dataarray-like

A data array to append.

set_color(color)

Set the array of colors for each line strip.

Parameters
colorarray-like

An array of rgba values.

set_data(index, data)

Set the complete data for a single line strip.

Parameters
indexint

The index of the line strip to be replaced.

dataarray-like

The data to assign to the selected line strip.

set_pos_offset(po)

Set the array of position offsets for each line strip.

Parameters
poarray-like

An array of xy offset values.

vertex_code = '\n    attribute vec2 index;  // .x=line_n, .y=vertex_n\n    uniform sampler2D position;\n    uniform sampler1D pos_offset;\n    uniform sampler1D color_tex;\n    \n    uniform vec2 pos_size;  // x=n_lines, y=n_verts_per_line\n    uniform float offset;  // rolling pointer into vertexes\n    uniform float dx;  // x step per sample\n    \n    varying vec2 v_index;\n    varying vec4 v_color;\n    \n    \n    void main() {\n        v_index = vec2(mod(index.y + offset, pos_size.y), index.x);\n        vec2 uv = (v_index + 0.5) / (pos_size.yx);\n        vec4 pos = vec4(index.y * dx, texture2D(position, uv).r, 0, 1);\n        \n        // fetch starting position from texture lookup:\n        pos += vec4(texture1D(pos_offset, (index.x + 0.5) / pos_size.x).rg,\n                              0, 0); \n        \n        gl_Position = $transform(pos);\n        \n        v_color = texture1D(color_tex, (index.x + 0.5) / pos_size.x);\n    }\n    '