3

私は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のリファレンスを使ってアプリケーションパッケージを構築します

4

1 に答える 1

1

私はそれを解決しました、完全な答えはhttps://mathematica.stackexchange.com/questions/19516/load-a-mathematica-package-via-net-codeで終わりました

Mathematicaセッションで$UserBaseDirectoryを評価しました。そのディレクトリには、作業を行うことになっている事前に確立されたアプリケーションフォルダがあります。これはプライベートアプリケーションフォルダです。

TopicXで拡張作業を行っているとします。プライベートアプリケーションフォルダーにTopicXフォルダーを作成します。作業内容を含む補助フォルダーを作成し、このトピックに関するノートブックを整理できます。

次に、パッケージ(XYZGraphs.mという名前でXYZフォルダーに配置されている)にBeginPackageステートメントを作成します。

BeginPackage["XYZ`XYZGraphs`"]

これで、次を使用してどこからでもパッケージをロードできます。

<< XYZ`XYZGraphs`
于 2013-02-14T04:03:43.457 に答える