私はC#を使ってデータをMathematicaに渡し、Graphsを返しています:
MathKernel k = new MathKernel();
k.CaptureGraphics = true;
k.GraphicsFormat = "JPEG";
k.Compute("Show[Graphics[{Thick, Blue, Circle[{#, 0}] & /@ Range[4], Black, Dashed, Line[{{0, 0}, {5, 0}}]}]]");
pictureBox1.Image = k.Graphics[0];
これは、パッケージを使用する必要があるまで機能します。画像の代わりに生データが返されるのがわかります。
StringBuilder command = new StringBuilder();
command.Append("fakedata01 = With[{n = DayCount[{2008, 01, 01}, {2011, 3, 27}]}, Transpose[{Array[DatePlus[{2008, 01, 01}, #] &, n, 0], #}] & /@ (100. + (Accumulate /@ RandomVariate[NormalDistribution[0, 1], {8, n}]))];");
command.Append("Dimensions[%];");
command.Append("XYZLineGraph[fakedata01, Title -> \"Banks\\[CloseCurlyQuote] Share Prices\", Subtitle -> \"1 January 2008 = 100\", ScaleUnits -> \"Index\", DateLabelFormat -> \"Quarter1\", PartialLastYear -> 2.95/12, Footnotes -> {{\"*\", \"MSCI financials index\"}}, Sourcenotes -> {\"Bloomberg\"}, SpecialGridValues -> 100, PlotStyle -> {Red, XYZDarkBlue, XYZPink, XYZMauve, XYZPaleOrange, XYZTurquoise, Green, Gray}, Epilog -> {Red, Arrow[{{{2009, 3}, 30}, {{2009, 8}, 48}}], Text[\"Label\", {{2009, 3}, 25}]}]");
MathKernel k = new MathKernel();
k.CaptureGraphics = true;
k.GraphicsFormat = "JPEG";
k.Compute("Get[\"XYZ`XYZGraphs`\"];");
k.Compute("Get[\"XYZ`XYZUtilities`\"]");
k.Compute("Show[" + command.ToString() + "]");
pictureBox1.Image = k.Graphics[0];
エラーは次のとおりです。
Get :: noopen:XYZを開くことができませんXYZGraphs
。
パッケージをMathematicaにインストールしたので、起動時にパッケージを利用できます。Mathematicaでコマンドを実行すると、期待どおりの出力が得られます。
パッケージをロードして.Net呼び出しで利用できるようにする方法を知っている人はいますか?
これらの2行は機能しません:
k.Compute("Get[\"XYZ`XYZGraphs`\"];");
k.Compute("Get[\"XYZ`XYZUtilities`\"]");
私も次のことを試しましたが、同じ問題があります。
k.Compute("Get[\"XYZ`XYZGraphs`\"];Get[\"XYZ`XYZUtilities`\"];Show[" + command.ToString() + "]");
私はすでにこれらのスレッドを見てきましたが、C#ではなくMathematicaにあります: パッケージ内からmathematicaパッケージをロードします複数の パッケージとMathematicaのリファレンスを使ってアプリケーションパッケージを構築します