Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/clbustos/rubyvis
Ruby version of Protovis, a visualization toolkit.
https://github.com/clbustos/rubyvis
protovis ruby treemap visualization
Last synced: 3 months ago
JSON representation
Ruby version of Protovis, a visualization toolkit.
- Host: GitHub
- URL: https://github.com/clbustos/rubyvis
- Owner: clbustos
- License: bsd-2-clause
- Created: 2010-09-27T14:06:44.000Z (about 14 years ago)
- Default Branch: master
- Last Pushed: 2024-03-18T17:05:58.000Z (8 months ago)
- Last Synced: 2024-04-25T02:41:50.180Z (7 months ago)
- Topics: protovis, ruby, treemap, visualization
- Language: Ruby
- Homepage: http://clbustos.github.io/rubyvis
- Size: 6.03 MB
- Stars: 236
- Watchers: 9
- Forks: 20
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: History.txt
- License: LICENSE.txt
Awesome Lists containing this project
README
# Rubyvis
* https://github.com/clbustos/rubyvis
[![Build Status](https://travis-ci.org/clbustos/rubyvis.svg?branch=master)](https://travis-ci.org/clbustos/rubyvis)
## DESCRIPTION:
Ruby port of [Protovis](http://vis.stanford.edu/protovis/), a Javascript visualization toolkit.
## FEATURES/PROBLEMS:
This library implements almost completely core API of protovis, including all static marks, SVG builder class and data classes. Spec coverage is near 90%
Implemented:
* Marks: All, except transient and transitions.
* Layout: Arc, Cluster, Grid, Horizon, Indent, Matrix, Pack, Partition, Stack, Tree and Treemap. To implement: Bullet, Force, and Rollup.Using protovis examples[http://vis.stanford.edu/protovis/ex/] as reference
* Conventional: All working
* Custom:
* Backer's Barley
* Burtin's Antibiotics: Scatterplot matrix
* Cars: Parallel Coordinates
* Crimea war: Grouped bar chart and line chart
* Hierarchies:
* Treemap
* Bubble Charts
* Circle Packing
* Dendogram
* Icicle
* Indent
* Node-Link Tree
* Sunburst
* Treemap
* Networks:
* Arc
* Matrix
I try to maintain, when posible, complete compatibility with Javascript API, including camel case naming of functions.User could use +pv+ freely, cause is defined as a global method which call Rubyvis.
Nokogiri is used as XML library. If not available, or $rubyvis_no_nokogiri is set to true, REXML is used. Nokogiri is 30%-35% faster that REXML on our test.
## CURRENT PROGRESS
* pv.js
* pv-internals.js
* color/Color.js
* color/Colors.js
* data/Arrays.js
* data/Flatten.js
* data/Histogram.js
* data/Numbers.js
* data/LinearScale.js
* data/LogScale.js (incomplete)
* data/Nest.js
* data/QuantitativeScale.js
* data/OrdinalScale.js
* data/Scale.js
* layout/Arc.js
* layout/Cluster.js
* layout/Grid.js
* layout/Hierarchy.js
* layout/Horizon.js
* layout/Indent.js
* layout/Layout.js
* layout/Matrix.js
* layout/Network.js
* layout/Pack.js
* layout/Partition.js
* layout/Stack.js
* layout/Tree.js
* layout/Treemap.js
* mark/Anchor.js
* mark/Area.js
* mark/Bar.js
* mark/Dot.js
* mark/Label.js
* mark/Line.js
* mark/Mark.js
* mark/Panel.js
* mark/Rule.js
* mark/Wedge.js
* scene/SvgBar.js
* scene/SvgLabel.js
* scene/SvgLine.js
* scene/SvgPanel.js
* scene/SvgRule.js
* scene/SvgScene.js
* scene/SvgWedge.js
* text/Format.js (incomplete)
* text/NumberFormat.js (incomplete)## SYNOPSIS:
The primary API, based on Gregory Brown's Ruby Best Practices, uses blocks and name of marks as methods
require 'rubyvis'
vis = Rubyvis::Panel.new do
width 150
height 150
bar do
data [1, 1.2, 1.7, 1.5, 0.7, 0.3]
width 20
height {|d| d * 80}
bottom(0)
left {index * 25}
end
end
vis.render
puts vis.to_svgThe library allows you to use chain methods API, like original protovis
require 'rubyvis'
vis = Rubyvis::Panel.new.width(150).height(150);
vis.add(pv.Bar).
data([1, 1.2, 1.7, 1.5, 0.7, 0.3]).
width(20).
height(lambda {|d| d * 80}).
bottom(0).
left(lambda {self.index * 25});
vis.render
puts vis.to_svg
See examples directory for original protovis examples adaptations and others graphics. You can see all of them online on the [documentation page](http://clbustos.github.io/rubyvis/).
## THE MOST FREQUENT QUESTION (MFQ)
Why use a server-side technology if I can use a client-side, which is faster and more economic for developer?
If you want to present graphs: (a) complex and/or dynamically generated, (b) only on the web and (c) on modern browsers, [Protovis](http://vis.stanford.edu/protovis/) is an excellent option. For simpler charts, Protovis is overkill. I recomend [jqPlot](http://www.jqplot.com/).
Rubyvis is designed mainly for off-line operation, like batch creation of graphs for use on printed documents (rtf-pdf), with possibility of use easily the script for on-line use.
## REQUIREMENTS:
Tested on Ruby 2.1 to 2.6 and Jruby (mode 1.9)
UPDATE 2024-02-08: Tested on 3.2.2## INSTALL:
$ gem install rubyvis
## LICENSE:
BSD 2-Clause (see LICENSE.txt)