Wolfram EngineをVisualBasicで使う(3:グラフを表示してみる)
今回は、グラフを表示してみたい。
実際やってみたところ、簡単なものであればそれほど手間はかからないことが分かった。
前回のコードをそのまま流用します。
- レイアウトに「PictureBox」を追加します。画面の左下のテキストボックス「TextBox1」は今回は使わないので、端によけておきます。
画像のエリアを配置 - コードを次のように書き換えます。
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim ml As IKernelLink = MathLinkFactory.CreateKernelLink("-linkmode launch -linkname 'C:\Program Files\Wolfram Research\Wolfram Engine\13.3\WolframKernel.exe'")
ml.WaitAndDiscardAnswer()
Dim result As Image = ml.EvaluateToImage(TextBox2.Text, 200, 200)
PictureBox1.Image = result
End Sub
End Class
Wolfram Kernelで画像を生成するときには、「EvaluateToImage()」を使います。出力はbyte[]になるので、VisualBasicでは「Image」として定義します。
この「Image」を「PictureBox」の「Image」に代入すればいいです。
200px x 200px で画像を出力することにします。
-
起動して、テキストボックスに
Plot[Sin[x], {x, 0, 6 Pi}]
と入力し、「Evaluate」をクリックします。
画像の時には、表示間で少し時間がかかります。グラフが表示された -
グリッド線と凡例を入れてみます。
まずは凡例を試します。入力フィールドのWolgram言語はこれ。
Plot[Sin[x], {x, 0, 6 Pi}, PlotLegends->”Expressions”]
凡例は対応していない模様。
凡例は表示できない? - デバッガで見てみると、それぞれの値は次のようになってます。「"Expressions”」のダブルクオートをエスケープすればうまくいくのかな、と思ったりしたのですが、いくつか試してみてもダメでした。。。方法を発見できたらまた書きます。
-
3次元のグラフもかけるのかな、ということで、
Plot3D[Sin[x + y^2], {x, -3, 3}, {y, -2, 2}]
3次元の関数プロット
上記の関数はWolframのドキュメントセンターのものを使いました。同じページにもっと複雑なものもあるので、ついでに結果を書いておきます。
Plot3D[{x^2 + y^2, -x^2 - y^2}, {x, -2, 2}, {y, -2, 2}]
Plot3D[Im[ArcSin[(x + I y)^4]], {x, -2, 2}, {y, -2, 2}]
ドキュメントセンターの画像とほぼ同じです。
なかなかうまくできてます。