{"id":13858567,"url":"https://github.com/clbustos/rubyvis","last_synced_at":"2025-07-14T00:31:41.058Z","repository":{"id":1089483,"uuid":"942636","full_name":"clbustos/rubyvis","owner":"clbustos","description":"Ruby version of Protovis, a visualization toolkit.","archived":false,"fork":false,"pushed_at":"2024-05-16T21:56:45.000Z","size":6330,"stargazers_count":244,"open_issues_count":5,"forks_count":19,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-06-22T20:17:37.274Z","etag":null,"topics":["protovis","ruby","treemap","visualization"],"latest_commit_sha":null,"homepage":"http://clbustos.github.io/rubyvis","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/clbustos.png","metadata":{"files":{"readme":"README.md","changelog":"History.txt","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2010-09-27T14:06:44.000Z","updated_at":"2025-03-15T14:35:21.000Z","dependencies_parsed_at":"2024-06-18T15:52:04.045Z","dependency_job_id":null,"html_url":"https://github.com/clbustos/rubyvis","commit_stats":null,"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/clbustos/rubyvis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clbustos%2Frubyvis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clbustos%2Frubyvis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clbustos%2Frubyvis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clbustos%2Frubyvis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/clbustos","download_url":"https://codeload.github.com/clbustos/rubyvis/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/clbustos%2Frubyvis/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265227784,"owners_count":23731039,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["protovis","ruby","treemap","visualization"],"created_at":"2024-08-05T03:02:13.601Z","updated_at":"2025-07-14T00:31:40.557Z","avatar_url":"https://github.com/clbustos.png","language":"Ruby","funding_links":[],"categories":["Ruby"],"sub_categories":[],"readme":"# Rubyvis\n\n* https://github.com/clbustos/rubyvis\n\n[![Build Status](https://travis-ci.org/clbustos/rubyvis.svg?branch=master)](https://travis-ci.org/clbustos/rubyvis)\n\n\n## DESCRIPTION:\n\nRuby port of [Protovis](http://vis.stanford.edu/protovis/), a Javascript visualization toolkit.\n\n## FEATURES/PROBLEMS:\n\nThis library implements almost completely core API of protovis, including all static marks, SVG builder class and data classes. Spec coverage is near 90%\n\nImplemented: \n\n* Marks: All, except transient and transitions.\n* Layout: Arc, Cluster, Grid, Horizon, Indent, Matrix, Pack, Partition, Stack, Tree and Treemap. To implement: Bullet, Force, and Rollup.\n\nUsing protovis examples[http://vis.stanford.edu/protovis/ex/] as reference\n\n* Conventional: All working\n* Custom: \n * Backer's Barley\n * Burtin's Antibiotics: Scatterplot matrix\n * Cars: Parallel Coordinates\n * Crimea war: Grouped bar chart and line chart\n* Hierarchies:\n * Treemap\n * Bubble Charts\n * Circle Packing\n * Dendogram\n * Icicle\n * Indent\n * Node-Link Tree\n * Sunburst\n * Treemap\n* Networks:\n * Arc\n * Matrix\n \nI try to maintain, when posible, complete compatibility with Javascript API, including camel case naming of functions.  \n\nUser could use +pv+ freely, cause is defined as a global method which call Rubyvis.\n\nNokogiri 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.\n\n## CURRENT PROGRESS\n\n* pv.js\n* pv-internals.js\n* color/Color.js\n* color/Colors.js\n* data/Arrays.js\n* data/Flatten.js\n* data/Histogram.js\n* data/Numbers.js\n* data/LinearScale.js\n* data/LogScale.js (incomplete)\n* data/Nest.js\n* data/QuantitativeScale.js\n* data/OrdinalScale.js\n* data/Scale.js\n* layout/Arc.js\n* layout/Cluster.js\n* layout/Grid.js\n* layout/Hierarchy.js\n* layout/Horizon.js\n* layout/Indent.js\n* layout/Layout.js\n* layout/Matrix.js\n* layout/Network.js\n* layout/Pack.js\n* layout/Partition.js\n* layout/Stack.js\n* layout/Tree.js\n* layout/Treemap.js\n* mark/Anchor.js\n* mark/Area.js\n* mark/Bar.js \n* mark/Dot.js \n* mark/Label.js\n* mark/Line.js\n* mark/Mark.js\n* mark/Panel.js\n* mark/Rule.js\n* mark/Wedge.js\n* scene/SvgBar.js\n* scene/SvgLabel.js\n* scene/SvgLine.js\n* scene/SvgPanel.js\n* scene/SvgRule.js\n* scene/SvgScene.js\n* scene/SvgWedge.js\n* text/Format.js (incomplete)\n* text/NumberFormat.js (incomplete)\n\n## SYNOPSIS:\n\nThe primary API, based on Gregory Brown's Ruby Best Practices, uses blocks and name of marks as methods\n\n    require 'rubyvis'\n    \n    vis = Rubyvis::Panel.new do \n      width 150\n      height 150\n      bar do\n        data [1, 1.2, 1.7, 1.5, 0.7, 0.3]\n        width 20\n        height {|d| d * 80}\n        bottom(0)\n        left {index * 25}\n      end\n    end\n    \n    vis.render\n    puts vis.to_svg\n\n\nThe library allows you to use chain methods API, like original protovis\n\n    require 'rubyvis'\n    \n    vis = Rubyvis::Panel.new.width(150).height(150);\n    \n    vis.add(pv.Bar).\n      data([1, 1.2, 1.7, 1.5, 0.7, 0.3]).\n      width(20).\n      height(lambda {|d| d * 80}).\n      bottom(0).\n      left(lambda {self.index * 25});\n    \n    vis.render\n    puts vis.to_svg\n    \n\nSee 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/).\n\n\n## THE MOST FREQUENT QUESTION (MFQ)\n\nWhy use a server-side technology if I can use a client-side, which is faster and more economic for developer?\n\nIf 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/).\n\nRubyvis 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.\n\n## REQUIREMENTS:\n\nTested on Ruby 2.1 to 2.6 and Jruby (mode 1.9)\nUPDATE 2024-02-08: Tested on 3.2.2\n\n## INSTALL:\n\n$ gem install rubyvis\n\n## LICENSE:\n\nBSD 2-Clause (see LICENSE.txt)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclbustos%2Frubyvis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclbustos%2Frubyvis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclbustos%2Frubyvis/lists"}