2011-05-21 54 views
2

我想實現這個問題的答案:https://stackoverflow.com/questions/3704647/can-you-recommend-a-charting-library-for-scala/3704974#3704974Scalala繪圖:編譯錯誤

我已經下載並從Git的樞紐編譯Scalala並放置在scalala_2.8.1-1.0.0.RC2-SNAPSHOT.jar在我lib文件夾(我使用SBT做我的構建)。下面的代碼:

import scalala.library.Plotting 
object ScalalaTest extends Application 
{ 

    val x = Plotting.linspace(0,1); 
} 

,我發現了以下錯誤:

[error] /src/main/scala/ScalalaTest.scala:6: value linspace is not a member of object scalala.library.Plotting 
[error] val x = Plotting.linspace(0,1); 
[error]     ^
[error] one error found 

它看起來像我的斯卡拉編譯器可識別scalala包,但不承認Plotting成員(我試過其他除linspace)。這很奇怪,因爲根據the Scalala APIlinspacePlotting的成員。

+0

我相信應該有一個'scalala'標籤,但沒有代表添加它。 – dsg 2011-05-21 08:09:19

+0

你檢查了源代碼嗎?也許你的版本不符合scaladoc版本? – 2011-05-21 11:36:05

+0

嗯...一個圖書館有趣的名字。聽起來像一個老西班牙歌曲:) – 2011-05-23 17:30:57

回答

0

linspace似乎是特徵Plotting的成員,而不是伴侶對象。因此,您必須創建Plotting(或任何with Plotting)的實例才能訪問該方法。

+0

'Plotting'有一個伴侶:'Plotting extends Plotting'。另一個子類是'scalala.Scalala',我在引用時遇到了問題。 'import scalala.Scalala'這行會引發以下編譯錯誤:'Scalala不是scalala的成員'。 – dsg 2011-05-21 07:00:42

+0

你是對的,我被我的瀏覽器愚弄了。 – 2011-05-21 11:31:36

2

這曾經工作,很高興和優雅 - 這似乎current way是:

val x = DenseVector.range(0,100)/100.0; 
plot.hold = true 
plot(x, x :^ 2) 
plot(x, x :^ 3, '.') 
xlabel("x axis") 
ylabel("y axis") 
saveas("lines.png") 

這需要包括:

import scalala.tensor.dense.DenseVector 
import scalala.library.Plotting._ 

的SBT依賴關係:

val scalaToolsSnapshots = "Scala Tools Snapshots" at "http://scala-tools.org/repo-snapshots/" 
    val ScalaNLPMaven2 = "ScalaNLP Maven2" at "http://repo.scalanlp.org/repo/" 
    val ondex = "ondex" at "http://ondex.rothamsted.bbsrc.ac.uk/nexus/content/groups/public/" 

    val scalala = "org.scalala" %% "scalala" % "1.0.0.RC2-SNAPSHOT" 
+0

@Johan Prinsloo - 這個工作包需要導入什麼? – dsg 2011-05-21 22:30:40

+0

導入scalala.tensor.dense._測試1.0.0.RC2-SNAPSHOT – 2011-05-21 22:36:00

+0

@Johan Prinsloo - 還有更多。我仍然在'plot','xlabel'和'ylabel'上找不到價值。 – dsg 2011-05-21 22:52:39