lib/rubyvis/mark/dot.rb in rubyvis-0.1.5 vs lib/rubyvis/mark/dot.rb in rubyvis-0.1.6
- old
+ new
@@ -1,26 +1,106 @@
module Rubyvis
+ # Alias por Rubyvis::Dot
def self.Dot
Rubyvis::Dot
end
+ # Represents a dot; a dot is simply a sized glyph centered at a given
+ # point that can also be stroked and filled. The <tt>size</tt> property is
+ # proportional to the area of the rendered glyph to encourage meaningful visual
+ # encodings. Dots can visually encode up to eight dimensions of data, though
+ # this may be unwise due to integrality. See Mark for details on the
+ # prioritization of redundant positioning properties.
class Dot < Mark
+ # Type of mark
def type
"dot"
end
@properties=Mark.properties.dup
- attr_accessor_dsl :shape, :shape_angle, :shape_radius, :shape_size, :line_width, [:stroke_style, lambda {|d| pv.color(d)}], [:fill_style, lambda {|d| pv.color(d)}]
+ ##
+ # :attr: shape_size
+ # The size of the shape, in square pixels. Square pixels are used such that the
+ # area of the shape is linearly proportional to the value of the
+ # <tt>shapeSize</tt> property, facilitating representative encodings. This is
+ # an alternative to using shape_radius
+ #
+ ##
+ # :attr: shape_radius
+ # The radius of the shape, in pixels. This is an alternative to using
+ # shape_size
+ #
+
+ ##
+ # :attr: shape
+ # The shape name. Several shapes are supported:<ul>
+ #
+ # <li>cross
+ # <li>triangle
+ # <li>diamond
+ # <li>square
+ # <li>circle
+ # <li>tick
+ # <li>bar
+ #
+ # </ul>These shapes can be further changed using the angle() property;
+ # for instance, a cross can be turned into a plus by rotating. Similarly, the
+ # tick, which is vertical by default, can be rotated horizontally. Note that
+ # some shapes (cross and tick) do not have interior areas, and thus do not
+ # support fill style meaningfully.
+ #
+ # <p>Note: it may be more natural to use the Rule mark for
+ # horizontal and vertical ticks. The tick shape is only necessary if angled
+ # ticks are needed.
+
+ ##
+ # :attr: shape_angle
+ # The shape rotation angle, in radians. Used to rotate shapes, such as to turn
+ # a cross into a plus.
+
+ ##
+ # :attr: line_width
+ # The width of stroked lines, in pixels; used in conjunction with
+ # +stroke_style+ to stroke the dot's shape.
+
+ ##
+ # :attr: stroke_style
+ # The style of stroked lines; used in conjunction with +line_width+ to
+ # stroke the dot's shape. The default value of this property is a categorical color. See Rubyvis.color()
+
+ ##
+ # :attr: fill_style
+ # The fill style; if non-null, the interior of the dot is filled with the
+ # specified color. The default value of this property is null, meaning dots are
+ # not filled by default. See Rubyvis.color()
+
+ attr_accessor_dsl :shape, :shape_angle, :shape_radius, :shape_size, :line_width, [:stroke_style, lambda {|d| Rubyvis.color(d)}], [:fill_style, lambda {|d| Rubyvis.color(d)}]
+ # Default properties for dots. By default, there is no fill and the stroke
+ # style is a categorical color. The default shape is "circle" with radius 4.5.
def self.defaults()
a=Rubyvis::Colors.category10
Dot.new().extend(Mark.defaults).shape("circle"). line_width(1.5). stroke_style(lambda {a.scale(self.parent.index)})
end
-
+ # Constructs a new dot anchor with default properties. Dots 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 dot. Note that this behavior is different from
+ # other mark anchors, which default to rendering text <i>inside</i> 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.
def anchor(name)
-
-
mark_anchor(name).left(lambda {
s=scene.target[self.index]
case self.name
when 'bottom' then s.left;
when 'top' then s.left;
@@ -64,10 +144,13 @@
'bottom'
end
})
end
- def build_implied(s)
+
+
+ # @private Sets radius based on size or vice versa.
+ def build_implied(s) # :nodoc:
r = s.shape_radius
z = s.shape_size
if (r.nil?)
if (z.nil?)
s.shape_size = 20.25;