Created
April 18, 2014 16:38
-
-
Save translunar/11053241 to your computer and use it in GitHub Desktop.
Plotrb grouped bar
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| require 'plotrb' | |
| data = pdata.name('table').values( | |
| [ | |
| {category: :A, position: 0, value: 0.1}, | |
| {category: :A, position: 1, value: 0.6}, | |
| {category: :A, position: 2, value: 0.9}, | |
| {category: :A, position: 3, value: 0.4}, | |
| {category: :B, position: 0, value: 0.7}, | |
| {category: :B, position: 1, value: 0.2}, | |
| {category: :B, position: 2, value: 1.1}, | |
| {category: :B, position: 3, value: 0.8}, | |
| {category: :C, position: 0, value: 0.6}, | |
| {category: :C, position: 1, value: 0.1}, | |
| {category: :C, position: 2, value: 0.2}, | |
| {category: :C, position: 3, value: 0.7} | |
| ] | |
| ) | |
| category = pdata.name('category').source('table').transform [facet_transform.keys(:category)] | |
| xs = linear_scale.name('val').from('table.value').nicely.to_width | |
| gs = ordinal_scale.name('cat').from('category.key').padding(0.2).to_height | |
| cs = ordinal_scale.name('color').to_colors | |
| ys = ordinal_scale.name('pos').from('table.position').to_height | |
| rm = rect_mark.from(data) do | |
| enter do | |
| y_start { scale(ys).field(:position) } | |
| height { scale(ys).use_band } | |
| x_start { scale(xs).field(:value) } | |
| x_end { scale(xs).value(0) } | |
| fill { scale(cs).field(:position) } | |
| end | |
| end | |
| tm = text_mark.from(data) do | |
| enter do | |
| y { scale(ys).field(:position) } | |
| dy { scale(ys).mult(0.5).use_band } | |
| x { scale(xs).field(:value).offset(-4) } | |
| text { scale(xs).field(:value) } | |
| fill :white | |
| align :right | |
| baseline :middle | |
| end | |
| end | |
| mark = group_mark.from(category) do | |
| scales gs | |
| axes y_axis.scale(gs).tick_size(0).tick_padding(8) | |
| marks rm, tm | |
| enter do | |
| y { scale(gs).field(:key) } | |
| height { scale(gs).use_band } | |
| end | |
| end | |
| vis = visualization.width(300).height(240) do | |
| data data, category | |
| scales gs, cs, xs, ys | |
| marks mark | |
| axes x_axis.scale(xs), y_axis.scale(ys) | |
| end | |
| puts vis.generate_spec(:pretty) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| $ ruby grouped_bar.rb | |
| /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/kernel.rb:117:in `method_missing': undefined method `to' for #<Plotrb::Mark:0x007ffb249d2958> (NoMethodError) | |
| from grouped_bar.rb:37:in `<main>' | |
| Johns-MacBook-Air-2:examples jwoods$ ruby grouped_bar.rb | |
| /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/transforms.rb:586:in `get_full_field_ref': Invalid data field (ArgumentError) | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/transforms.rb:460:in `block in process_facet_keys' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/transforms.rb:460:in `collect!' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/transforms.rb:460:in `process_facet_keys' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/transforms.rb:409:in `attribute_post_processing' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:65:in `collect_attributes' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:75:in `block (2 levels) in collect_attributes' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:74:in `collect' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:74:in `block in collect_attributes' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:67:in `each' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:67:in `collect_attributes' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:75:in `block (2 levels) in collect_attributes' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:74:in `collect' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:74:in `block in collect_attributes' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:67:in `each' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:67:in `collect_attributes' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/visualization.rb:41:in `generate_spec' | |
| from grouped_bar.rb:66:in `<main>' | |
| Johns-MacBook-Air-2:examples jwoods$ ruby grouped_bar.rb | |
| /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/transforms.rb:586:in `get_full_field_ref': Invalid data field (ArgumentError) | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/transforms.rb:460:in `block in process_facet_keys' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/transforms.rb:460:in `collect!' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/transforms.rb:460:in `process_facet_keys' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/transforms.rb:409:in `attribute_post_processing' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:65:in `collect_attributes' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:75:in `block (2 levels) in collect_attributes' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:74:in `collect' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:74:in `block in collect_attributes' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:67:in `each' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:67:in `collect_attributes' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:75:in `block (2 levels) in collect_attributes' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:74:in `collect' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:74:in `block in collect_attributes' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:67:in `each' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/base.rb:67:in `collect_attributes' | |
| from /usr/local/var/rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/plotrb-0.0.1/lib/plotrb/visualization.rb:41:in `generate_spec' | |
| from grouped_bar.rb:66:in `<main>' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi John. I think it might be the problem with the facet keys.
A field reference in Plotrb currently does not support symbols. Try
facet_transform.keys('category')instead; orfacet_transform.keys('data.category'), they should produce the same output.