こんにちは。本日は珍しく(というか初めて)技術系の記事です。
とはいえ、基礎的なことで新規性はございませんのでご了承ください!
さて、今回記事にする内容はタイトルの通り、Rubyのgnuplotジェムを使用して3次元グラフを生成するという内容になります。今まではpythonのmatplotlibを使用してグラフを生成していたのですが、Rubyでグラフ生成はやったことがなかったなと思ったので、やってみました。記事の内容としてはプログラミング始めたばかりの人に向けた記事になると思うので、以下で一応用語の説明をしておきます。
まず、Rubyは日本人(まつもと ゆきひろ氏)によって作られたプログラミング言語です。世界的に広く使われており、日本人が作成しているためマニュアルも日本語で初心者も取り組みやすい、というのがわかりやすい特徴ですね。またgnuplot(ニュープロット、グニュープロット)は、グラフを描画するためのフリーソフトの名前です。今回はRubyでgnuplotのgem(他の言語でいうライブラリ)が公開されていることからgnuplotの使用を選びました。以上、これらのソフトを使ってグラフの生成をしていきます。
なお、私の環境では綺麗なコード挿入ができないため、挿入したコードが見にくいことはご容赦ください。
作業環境・前提条件
今回、作業を行なっていく環境と前提条件は以下になります。
- macOS Catalina 10.15.3
- Homebrew 2.2.13 インストール済み
- Ruby 2.4.2 インストール済み(Macなら標準でインストールされているはず)
gnuplot のインストール
gnuplotはHomebrewのを使用することでインストール可能ですが、グラフを描画するためには事前に使用したいターミナルをインストールしておく必要があります。今回はx11というターミナルを使用して進めていきます。
まず、ダウンロードページからXQuartzをダウンロードしてインストーラを起動してください。記事執筆段階での最新バージョンは2.7.11です。インストーラが起動したら、使用許諾に同意しつつ「続ける」「インストールする」をひたすら押していけばOKです。インストールが完了すると、インストーラをゴミ箱に移動するか聞かれるので、そのままゴミ箱に捨ててしまって問題ありません。
これで事前準備ができましたので、gnuplotのインストールに入っていきます。とはいえ、brewにちょっとオプションをつけてインストールするだけなので、以下のコマンドを実行してください。
$ brew install gnuplot –with-x11
これでgnuplotのインストールは完了です。記事執筆段階の最新バージョンは5.2でした。gnuplotの起動の確認と初期設定を行うため、コマンドプロンプトで以下のコマンドを実行します。
$ gnuplot #gnuplotが起動
gnuplot > set terminal x11 #ターミナルをx11に設定
その後、plot sin(x)とコマンドを実行して、以下の画像が表示されればインストールが成功しています。
無事にgnuplotで2次元グラフが生成できていますね。次はこれをRubyで行います。
Rubyで3次元グラフを生成
gnuplotのインストールが済んでしまえば、あとはgemをインストールしてサンプルコードを実行するだけでグラフが生成できます。まず、gnuplot のgemのインストールはコマンドプロンプトで以下のコマンドを実行してください。
$ gem install gnuplot
これでジェムのインストールも完了。Rubyでgnuplotを動かせるようになりました。ということで、以下のサンプルコードをコピペして来て、ローカルに保存してください。今回はファイル名を「make_3d_graph.rb」としました。
======================================================================
#! /usr/local/bin/ruby
#———————————————–
# Ruby script to draw a graph by gnuplot.(Ex.3)
#———————————————–
require ‘gnuplot’
Gnuplot.open do |gp|
Gnuplot::SPlot.new(gp) do |plot|
#plot.terminal “png enhanced font ‘IPA P ゴシック’ fontscale 1.2”
#plot.output “gnuplot_3.png”
#plot.set “object 1 rect from screen 0,0 to screen 1,1 fc rgb ‘#D0D 0E0’ fillstyle solid 1.0 behind”
plot.title “作成例3”
plot.xrange “[-10:10]”
plot.yrange “[-10:10]”
plot.zrange “[-10:10]”
plot.xlabel “x”
plot.ylabel “y”
plot.zlabel “z”
plot.pm3d
plot.grid
plot.data << Gnuplot::DataSet.new(“10*cos(0.2*x)*cos(0.1*y)”) do |ds|
ds.with = “lines”
ds.linecolor = 6
end
end
end
======================================================================
最後に、以下のコマンドを実行して、サンプルコードを起動してください。
$ ruby make_3d_graph.rb
以下のようなウィンドウが表示されれば成功です(一部文字化けはご愛敬)。あとはこのコードを書き換えていけば色々なグラフを生成できますね。お疲れ様でした。
オマケ
インストールや実行に関してエラーが発生する人もいると思うので、私の環境で発生したエラーの解決に役立ったページのリンクを貼っておきます。諦めず頑張ってください。