forked from clbustos/rubyvis
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.txt
155 lines (118 loc) · 3.77 KB
/
README.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
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
149
150
151
152
153
154
155
= Rubyvis
* http://rubyvis.rubyforge.org/
== 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_svg
The 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
== 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 1.8.7, 1.9.1, 1.9.2-p0 and ruby-head (future 1.9.3)
== INSTALL:
$ gem install rubyvis
== LICENSE:
GPL-2