class Rubyvis::Line

Represents a series of connected line segments, or polyline, that can be stroked with a configurable color and thickness. Each articulation point in the line corresponds to a datum; for n points, n-1 connected line segments are drawn. The point is positioned using the box model. Arbitrary paths are also possible, allowing radar plots and other custom visualizations.

<p>Like areas, lines can be stroked and filled with arbitrary colors. In most cases, lines are only stroked, but the fill style can be used to construct arbitrary polygons.



The eccentricity of polar line segments; used in conjunction with interpolate(“polar”). The default value of 0 means that line segments are drawn as circular arcs. A value of 1 draws a straight line. A value between 0 and 1 draws an elliptical arc with the given eccentricity.


The line fill style; if non-nil, the interior of the line is closed and filled with the specified color. The default value of this property is a nil, meaning that lines are not filled by default.

<p>This property is fixed. See Rubyvis.Mark


How to interpolate between values. Linear interpolation (“linear”) is the default, producing a straight line between points. For piecewise constant functions (i.e., step functions), either “step-before” or “step-after” can be specified. To draw a clockwise circular arc between points, specify “polar”; to draw a counterclockwise circular arc between points, specify “polar-reverse”. To draw open uniform b-splines, specify “basis”. # To draw cardinal splines, specify “cardinal”; see also #tension

<p>This property is fixed. See Rubyvis.Mark


The type of corners where two lines meet. Accepted values are “bevel”, “round” and “miter”. The default value is “miter”.

<p>For segmented lines, only “miter” joins and “linear” interpolation are currently supported. Any other value, including nil, will disable joins, producing disjoint line segments. Note that the miter joins must be computed manually (at least in the current SVG renderer); since this calculation may be expensive and unnecessary for small lines, specifying nil can improve performance significantly.

<p>This property is fixed. See Rubyvis.Mark


The width of stroked lines, in pixels; used in conjunction with stroke_style to stroke the line.


Whether the line is segmented; whether variations in stroke style, line width and the other properties are treated as fixed. Rendering segmented lines is noticeably slower than non-segmented lines. <p>This property is fixed. See Rubyvis.Mark


The style of stroked lines; used in conjunction with lineWidth to stroke the line. The default value of this property is a categorical color.


The tension of cardinal splines; used in conjunction with interpolate(“cardinal”). A value between 0 and 1 draws cardinal splines with the given tension. In some sense, the tension can be interpreted as the “length” of the tangent; a tension of 1 will yield all zero tangents (i.e., linear interpolation), and a tension of 0 yields a Catmull-Rom spline. The default value is 0.7.

<p>This property is fixed. See Rubyvis.Mark

Public Class Methods

defaults() click to toggle source

Default properties for lines. By default, there is no fill and the stroke style is a categorical color. The default interpolation is linear.

# File lib/rubyvis/mark/line.rb, line 147
def self.defaults
  a=Rubyvis::Colors.category10()'miter').line_width(1.5).stroke_style( lambda { a.scale(parent.index)}).interpolate('linear').eccentricity(0).tension(0.7)

Public Instance Methods

anchor(name) click to toggle source

Constructs a new line anchor with default properties. Lines support five different anchors:<ul>

<li>top <li>left <li>center <li>bottom <li>right

</ul>In addition to positioning properties (left, right, top bottom), the anchors support text rendering properties (text-align, text-baseline). Text is rendered to appear outside the line. Note that this behavior is different from other mark anchors, which default to rendering text inside the mark.

<p>For consistency with the other mark types, the anchor positions are defined in terms of their opposite edge. For example, the top anchor defines the bottom property, such that a bar added to the top anchor grows upward.

# File lib/rubyvis/mark/line.rb, line 132
def anchor(name)
type() click to toggle source

Type of line

# File lib/rubyvis/mark/line.rb, line 110
def type