{"id":13719302,"url":"https://github.com/ruby-numo/numo-gnuplot","last_synced_at":"2025-05-07T11:31:28.470Z","repository":{"id":8683822,"uuid":"59359420","full_name":"ruby-numo/numo-gnuplot","owner":"ruby-numo","description":"Gnuplot wrapper for Ruby/Numo","archived":false,"fork":false,"pushed_at":"2022-10-08T13:26:18.000Z","size":78,"stargazers_count":51,"open_issues_count":5,"forks_count":7,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-05-03T18:47:45.068Z","etag":null,"topics":["gnuplot","narray","numo","plot","plotting","ruby","ruby-numo"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ruby-numo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-05-21T12:45:58.000Z","updated_at":"2024-04-16T22:36:39.000Z","dependencies_parsed_at":"2023-01-11T17:26:56.341Z","dependency_job_id":null,"html_url":"https://github.com/ruby-numo/numo-gnuplot","commit_stats":null,"previous_names":["ruby-numo/gnuplot"],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-numo%2Fnumo-gnuplot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-numo%2Fnumo-gnuplot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-numo%2Fnumo-gnuplot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ruby-numo%2Fnumo-gnuplot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ruby-numo","download_url":"https://codeload.github.com/ruby-numo/numo-gnuplot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252238578,"owners_count":21716611,"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":["gnuplot","narray","numo","plot","plotting","ruby","ruby-numo"],"created_at":"2024-08-03T01:00:46.013Z","updated_at":"2025-05-07T11:31:28.142Z","avatar_url":"https://github.com/ruby-numo.png","language":"Ruby","readme":"# Numo::Gnuplot : Gnuplot interface for Ruby\n\n\u003cdiv class=\"row\"\u003e\n\u003ca href=https://github.com/ruby-numo/numo-gnuplot-demo/blob/master/gnuplot/md/006histograms/README.md\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/ruby-numo/numo-gnuplot-demo/master/gnuplot/md/006histograms/image/006.png\" height=\"135\" width=\"135\"\u003e\n\u003c/a\u003e\n\u003ca href=https://github.com/ruby-numo/numo-gnuplot-demo/blob/master/gnuplot/md/501rainbow/README.md\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/ruby-numo/numo-gnuplot-demo/master/gnuplot/md/501rainbow/image/002.png\" height=\"135\" width=\"135\"\u003e\n\u003c/a\u003e\n\u003ca href=https://github.com/ruby-numo/numo-gnuplot-demo/blob/master/gnuplot/md/603finance/README.md\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/ruby-numo/numo-gnuplot-demo/master/gnuplot/md/603finance/image/013.png\" height=\"135\" width=\"135\"\u003e\n\u003c/a\u003e\n\u003ca href=https://github.com/ruby-numo/numo-gnuplot-demo/blob/master/gnuplot/md/502rgb_variable/README.md\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/ruby-numo/numo-gnuplot-demo/master/gnuplot/md/502rgb_variable/image/006.png\" height=\"135\" width=\"135\"\u003e\n\u003c/a\u003e\n\u003ca href=https://github.com/ruby-numo/numo-gnuplot-demo/blob/master/gnuplot/md/207hidden2/README.md\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/ruby-numo/numo-gnuplot-demo/master/gnuplot/md/207hidden2/image/001.png\" height=\"135\" width=\"135\"\u003e\n\u003c/a\u003e\n\u003ca href=https://github.com/ruby-numo/numo-gnuplot-demo/blob/master/gnuplot/md/905transparent_solids/README.md\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/ruby-numo/numo-gnuplot-demo/master/gnuplot/md/905transparent_solids/image/002.png\" height=\"135\" width=\"135\"\u003e\n\u003c/a\u003e\n\u003c/div\u003e\n\nAlpha version under development.\n\n* [GitHub site](https://github.com/ruby-numo/numo-gnuplot)\n* [RubyGems site](https://rubygems.org/gems/numo-gnuplot)\n* [Demo repository](https://github.com/ruby-numo/numo-gnuplot-demo) contains \u003e 500 plots!\n\n* [API doc](http://www.rubydoc.info/gems/numo-gnuplot/Numo/Gnuplot)\n* [Introduction.ja](https://github.com/ruby-numo/numo-gnuplot/wiki/Introduction.ja) (in Japanese)\n\nAlthough there are many [other Gnuplot interface libraries for Ruby](https://github.com/ruby-numo/numo-gnuplot#related-work),\nnone of them have so simple interface as to show an XY data plot by just typing:\n\n    plot x,y\n\nNumo::Gnuplot achieves this by providing only one class which has\nthe same inteface as Gnuplot command line, and no other class which\ncauses extra learning costs.\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n```ruby\ngem 'numo-gnuplot'\n```\n\nAnd then execute:\n\n    $ bundle\n\nOr install it yourself as:\n\n    $ gem install numo-gnuplot\n\n## Demo\n\n* [Ruby/Numo::Gnuplot Demo](https://github.com/ruby-numo/numo-gnuplot-demo)\n\n## Usage\n\n* All examples require to load Numo::Gnuplot class:\n\n```ruby\nrequire \"numo/gnuplot\"\n```\n\n* The first example showing how it works.\n\n```ruby\ngp = Numo::Gnuplot.new\ngp.set title:\"Example Plot\"\ngp.plot \"sin(x)\",w:\"lines\"\n```\n\n* You can omit receiver.\n\n```ruby\nNumo::Gnuplot.new.instance_eval do\n  set title:\"Example Plot\"\n  plot \"sin(x)\",w:\"lines\"\nend\n```\n\n* The same thing in short.\n\n```ruby\nNumo.gnuplot do\n  set title:\"Example Plot\"\n  plot \"sin(x)\",w:\"lines\"\nend\n```\n\n* In these examples, the following command lines are send to Gnuplot.\n\n```\nset title \"Example Plot\"\nplot sin(x) w lines\n```\n\n* Interactive plotting with IRB:\n\n```\n$ irb -r numo/gnuplot\nirb(main):001:0\u003e pushb Numo.gnuplot\nirb(gnuplot):002:0\u003e set t:\"Example Plot\"\nirb(gnuplot):003:0\u003e plot \"sin(x)\",w:\"lines\"\n```\n\n* Plotting X-Y data stored in arrays.\n\n```ruby\nrequire \"numo/gnuplot\"\n\nx = (0..100).map{|i| i*0.1}\ny = x.map{|i| Math.sin(i)}\n\nNumo.gnuplot do\n  set title:\"X-Y data plot\"\n  plot x,y, w:'lines', t:'sin(x)'\nend\n```\n\n* Plotting X-Y data stored in NArrays.\n\n```ruby\nrequire \"numo/gnuplot\"\nrequire \"numo/narray\"\n\nx = Numo::DFloat[0..100]/10\ny = Numo::NMath.sin(x)\n\nNumo.gnuplot do\n  set title:\"X-Y data plot in Numo::NArray\"\n  plot x,y, w:'lines', t:'sin(x)'\nend\n```\n\n* Multiple data are separated by Hash or put into Array.\n\n```ruby\nrequire 'numo/gnuplot'\nrequire 'numo/narray'\nNM = Numo::NMath\n\nn = 60\nx = Numo::DFloat[-n..n]/n*10\n\nNumo.gnuplot do\n  set title:\"multiple data series\"\n\n  # Hash-separated form\n  plot x,NM.sin(x), {w:'points',t:'sin(x)'}, x,x*NM.sin(x),{w:\"lines\",t:'x*sin(x)'}\n\n  # or Array-separated form\n  plot [x,NM.sin(x), w:'points',t:'sin(x)'], [x,x*NM.sin(x),w:\"lines\",t:'x*sin(x)']\n  # (here last item in each Array should be Hash, to distinguish from data array)\n\nend\n```\n\n* Plotting 2D arrays in 3D.\n\n```ruby\nrequire 'numo/gnuplot'\nrequire 'numo/narray'\n\nn = 60\nx = (Numo::DFloat.new(1,n).seq/n-0.5)*30\ny = (Numo::DFloat.new(n,1).seq/n-0.5)*30\nr = Numo::NMath.sqrt(x**2+y**2) + 1e-10\nz = Numo::NMath.sin(r)/r\n\nNumo.gnuplot do\n  set title:'2D data plot'\n  set dgrid3d:[60,60]\n  splot z, w:'pm3d', t:'sin(r)/r'\nend\n```\n\n### IRuby\nNumo::Gnuplot is compatible with [IRuby](https://github.com/SciRuby/iruby/).\n\n* Embedding a plot into iRuby Notebook.\n\n```ruby\nNumo::Gnuplot::NotePlot.new do\n  plot \"sin(x)\"\nend\n```\n\n* The same thing in short.\n\n```ruby\nNumo.noteplot do\n  plot \"sin(x)\"\nend\n```\n\n## Gnuplot methods\n\nNumo::Gnuplot class methods succeeded from Gnuplot commands:\n\n* clear\n* exit\n* fit(*args)\n* help(topic)\n* load(filename)\n* pause(*args)\n* plot(*args)\n* quit\n* reflesh\n* replot\n* reset(option)\n* set(*options)\n* show(option)\n* splot(*args)\n* unset(*options)\n* update(*files)\n\nNumo::Gnuplot class methods renamed from Gnuplot commands:\n\n* raise_plot(plot_window) -- 'raise' command\n* lower_plot(plot_window) -- 'lower' command\n\nNumo::Gnuplot-specific methods:\n\n* debug_off  -- turn off debug print.\n* debug_on  -- turn on debug print.\n* run(command_line) -- send command-line string to Gnuplot directly.\n* output(filename,[term,*opts]) -- output current plot to file. If term is omitted, an extension in filename is regarded as a term name. This invokes the next commands;\n```ruby\nset terminal:[term,*opts]\nset output:filename; refresh\n```\n* var(name) -- returns variable content in the Gnuplot context.\n\nSee [API doc](http://www.rubydoc.info/gems/numo-gnuplot/Numo/Gnuplot) for more.\n\n## Related Work\n\n* [Ruby Gnuplot](https://github.com/rdp/ruby_gnuplot)\n* [ruby-plot](https://github.com/davor/ruby-plot)\n* [Plotrobber](https://github.com/elitheeli/plotrobber)\n* [GNUPlotr](https://github.com/pbosetti/gnuplotr)\n* [GnuPlotter](https://github.com/maasha/gnuplotter)\n* [scbi_plot](https://rubygems.org/gems/scbi_plot)\n* [GnuplotRB](https://github.com/dilcom/gnuplotrb)\n* [NumPlot](https://rubygems.org/gems/numplot)\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub at\nhttps://github.com/ruby-numo/numo-gnuplot.\n","funding_links":[],"categories":["Visualization"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruby-numo%2Fnumo-gnuplot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fruby-numo%2Fnumo-gnuplot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fruby-numo%2Fnumo-gnuplot/lists"}