2014-09-29 3 views
5

aus Matlab kommen Nachdem ich kämpfen, um herauszufinden, warum die folgenden nicht funktioniert:Julia Plotfunktion Array gibt

plot(x=rand(10),y=rand(10)) 

Erzeugt ein Diagramm korrekt.

x=rand(10) 
y=rand(10) 
plot(x,y) 

produziert Fehler:

ERROR: plot has no method matching plot(::Array(Float64,1),::Array(Float64,1))

wäre ich sehr dankbar, wenn mir jemand erklären coould warum Sie den Code innerhalb der Plotlinie embeding erzeugt ein Ergebnis, aber die Definition der Variablen vorher führt zu einem Fehler. Die Logik sagt, sie sollten das gleiche Ergebnis liefern.

Ich benutze Julia v 0.3.1 und habe Gadfly als Charting-Tool geladen.

+0

Dies wird bei Syntax wie Toivo Antwort angibt. Im Allgemeinen weist das von Ihnen verwendete Plotting-Paket möglicherweise nicht dieselbe Syntax auf wie Sie es kennen. Zum Beispiel verwendet Winston - was mehr MATLAB-ähnlich ist - plot (x, y), um die durch Linien verbundenen Punkte zu plotten, wie es MATLAB tun würde, und plot (x, y, "o") erzeugt ein Streudiagramm. Während Gadfly plot (x = x, y = y, Geom.line) verwendet, um ein Liniendiagramm und ein Diagramm (x = x, y = y) zu erstellen, um ein Streudiagramm zu erstellen. Alternativ ist PyPlot MATLAB ähnlicher als Gadfly. – jverzani

Antwort

8

Im ersten Fall, den Sie verwenden Syntax Schlüsselwort-Argument, nicht zu Variablen zuweisen x und y (die Bedeutung von = innerhalb Funktion ruft besondere ist). Um den gleichen Effekt im zweiten Fall zu erhalten, sollten Sie

x=rand(10) 
y=rand(10) 
plot(x=x,y=y) 

verwenden, die den Wert in der Variablen x im Schlüsselwort-Argument geht x zu plot und den Wert in der Variablen y im Schlüsselwort-Argument y.