Edited at

nimでgnuplot使ってみたお話


はじめに

こんにちは、YagiELです。Qiita初投稿です。

もともとpythonをやっていたんですが、最近nimという至高の言語に出会ってしまい勉強中です。

なんか、nimnimしてきたな...

nimとの出会いとなった記事、貼っときますね。

https://qiita.com/rigani/items/6e87c7cee6903ed65ed2

さて、今回はそのnimを用いてgnuplotをやってみたお話をしようかなと思います。pythonのときはanacondaを使っていたのでmatplotlibで簡単にグラフ描画できたんですけどね。nimにはまだ(?)そういったパッケージがないのでgnuplotを利用します。


環境

Windows10 64bit

Visual Studio Code 1.38.1

nim 1.0.0


やったことリスト

1. nim動きますか?

2. nimbleでgnuplotをインストールしよう

3. gnuplot(自体)を入れましょう


1. nim動きますか?

nimのインストールからvscodeで使えるようにするまでの詳細はまた後日書きたいですね。今回はvscodeからちゃんと実行できるよってことの確認をします。


helloworld.nim

echo "Hello World"

#Hello World

をターミナルを使って"nim c -r helloworld.nim"で実行して動作確認をしましょう。動けばok


2. nimbleでgnuplotをインストールしよう

https://github.com/dvolk/gnuplot.nim

をインストールします。

名前がややこしくて勘違いしていたんですが、これをいれればグラフ描画ができるよってものではないらしいです。あくまでこれはnimでgnuplotを動かすためのインターフェイスなので、後でgnuplot自体をインストールする必要があります。(私はこれに気づかずに2週間ほど唸った...)

とまれ、ターミナルを使って"nimble install gnuplot"でインストールします。

現時点でgnuplotを利用したプログラムを実行してみましょう


gnu_test1.nim

import gnuplot,math

var
X=newSeq[float64](1500)
Y=newSeq[float64](len(X))
Z=newSeq[float64](len(X))
proc f(x:float64):float64=
#ちょこっとムダだけど関数の練習で使ってみた
result=x.sin
proc g(x:float64):float64=
result=x.cos
for i in 0 ..< len(X):
X[i]=i/100
Y[i]=(i/100).f#Y[i]=(i/100).sinとかでもいいはず
Z[i]=(i/100).g
cmd "set size square"
plot X,Y
plot X,Z

discard readChar stdin


するとこんな感じのエラーが出ます。

Error: execution of an external program failed: 'c:\Users\yagie\Documents\myprograms\nim\gnu_test1.exe '

いやー、ダメですねーーーgnuplot自体を入れないといけません(当然ちゃあ当然)...


3. gnuplot(自体)を入れましょう

さてさて、gnuplotを入れましょう。

https://sourceforge.net/projects/gnuplot/files/gnuplot/

からダウンロードできます。あとダウンロードした"gp527-win64-mingw"を使ってインストールします。で、インストールが終わったらPATHを通します。私の場合"C:\Program Files\gnuplot\bin"でした。環境変数はWindows10ならコントロールパネル→システムとセキュリティ→システム→システムの詳細設定→環境変数でいじれます。できれば終了です。vscodeを開いて再度gnu_test1.nimを動かしてみましょう!!

コメント 2019-10-08 001753.png

やったー!!できましたね。

以上、nimでグラフ描画でしたー

それではよいnim-lifeを!!