2013-02-13 37 views
2

使用一個Mathematica包我使用C#將數據傳遞給數學和返回圖表:負載,並通過Net代碼

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]; 

enter image description here

這工作,直到我需要使用一個包。我看到的原始數據返回的不是圖像:

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]; 

的錯誤是:

獲取:: noopen:無法打開XYZ XYZGraphs

我已經在Mathematica中安裝了包,所以在啓動時它們都可用。當我在Mathematica中運行命令時,它給了我預期的輸出。

有誰知道如何加載軟件包,以便他們可以通過.Net調用?

這兩行不工作:

k.Compute("Get[\"XYZ`XYZGraphs`\"];"); 
k.Compute("Get[\"XYZ`XYZUtilities`\"]"); 

我也試過以下,它有同樣的問題:

k.Compute("Get[\"XYZ`XYZGraphs`\"];Get[\"XYZ`XYZUtilities`\"];Show[" + command.ToString() + "]"); 

我已經看到了這些線程,但它們在Mathematica中不在C#中: Load a mathematica package from within a package Building Application Packages with multple packages and references in Mathematica

+0

有關[這裏]的更多信息(http://mathematica.stackexchange.com/questions/19516/load-a-mathematica-package-via-net-code) – 2013-02-13 04:04:06

回答

1

我的工作了,全部的答案是在上https://mathematica.stackexchange.com/questions/19516/load-a-mathematica-package-via-net-code

我在一個Mathematica會話評估$ UserBaseDirectory。在該目錄中是預先建立的應用程序文件夾,您應該在其中放置您的工作。這是您的私人應用程序文件夾。

假設您正在做關於TopicX的擴展工作。在您的私人Applications文件夾中創建一個TopicX文件夾。您可以創建包含您的工作的輔助文件夾並整理有關此主題的筆記本。

現在使你的包BeginPackage聲明(其名稱爲XYZGraphs.m並放置在theXYZ文件夾):

BeginPackage["XYZ`XYZGraphs`"] 

現在你可以從任何地方加載包使用:

<< XYZ`XYZGraphs`