Class: Rubyvis::Dot
Overview
Represents a dot; a dot is simply a sized glyph centered at a given point that can also be stroked and filled. The size
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.
Instance Attribute Summary
Attributes inherited from Mark
#_properties, #binds, #child_index, #parent, #proto, #root, #scale, #scene, #target
Class Method Summary collapse
-
.defaults ⇒ Object
Default properties for dots.
Instance Method Summary collapse
-
#anchor(name) ⇒ Object
Constructs a new dot anchor with default properties.
- #build_implied(s) ⇒ Object
-
#shape ⇒ Object
:attr: fill_style The fill style; if non-nil, the interior of the dot is filled with the specified color.
-
#type ⇒ Object
Type of mark.
Methods inherited from Mark
#add, #area, attr_accessor_dsl, #bar, #bind, #build, #build_instance, #build_properties, #context, #context_apply, #context_clear, #cousin, #delete_index, #dot, #event, #execute, #first, #image, index, #index, index=, #index=, #index_defined?, #initialize, #instance, #instances, #label, #last, #layout_arc, #layout_cluster, #layout_grid, #layout_horizon, #layout_indent, #layout_matrix, #layout_pack, #layout_partition, #layout_partition_fill, #layout_stack, #layout_tree, #layout_treemap, #line, #margin, #mark_anchor, #mark_bind, #mark_build_implied, #mark_build_instance, #mark_build_properties, #mark_extend, mark_method, #panel, #properties, properties, property_method, #property_value, #render, #rule, scene, scene=, #sibling, stack, stack=, #wedge
Constructor Details
This class inherits a constructor from Rubyvis::Mark
Class Method Details
.defaults ⇒ Object
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.
80 81 82 83 |
# File 'lib/rubyvis/mark/dot.rb', line 80 def self.defaults() a=Rubyvis::Colors.category10 Dot.new().mark_extend(Mark.defaults).shape("circle"). line_width(1.5). stroke_style(lambda {a.scale(self.parent.index)}) end |
Instance Method Details
#anchor(name) ⇒ Object
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 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.
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/rubyvis/mark/dot.rb', line 101 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; when 'center' then s.left; when 'left' then nil; else s.left+s.shape_radius end }).right(lambda { s=scene.target[self.index] self.name()=='left' ? s.right+s.shape_radius : nil }).top(lambda { s=scene.target[self.index] case self.name when 'left' then s.top; when 'right' then s.top; when 'center' then s.top; when 'top' then nil; else s.top+s.shape_radius end }).bottom(lambda { s=scene.target[self.index] self.name()=='top' ? s.bottom+s.shape_radius : nil }).text_align(lambda { case self.name when 'left' then 'right'; when 'bottom' then 'center'; when 'top' then 'center'; when 'center' then 'center'; else 'left' end }).text_baseline( lambda { case self.name when 'right' then 'middle'; when 'left' then 'middle'; when 'center' then 'middle'; when 'bottom' then 'top'; else 'bottom' end }) end |
#build_implied(s) ⇒ Object
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/rubyvis/mark/dot.rb', line 152 def build_implied(s) # :nodoc: r = s.shape_radius z = s.shape_size if (r.nil?) if (z.nil?) s.shape_size = 20.25; s.shape_radius = 4.5; else s.shape_radius = Math.sqrt(z) end elsif (z.nil?) s.shape_size = r * r; end mark_build_implied(s) end |
#shape ⇒ Object
:attr: fill_style The fill style; if non-nil, the interior of the dot is filled with the specified color. The default value of this property is nil, meaning dots are not filled by default. See Rubyvis.color()
77 |
# File 'lib/rubyvis/mark/dot.rb', line 77 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)}] |