2012-01-26 3 views
27

MATLAB, scilab 또는 matplotlib와 유사한 드로잉 플롯을위한 하스켈 라이브러리가 있습니까?하스켈 플로팅 라이브러리가 MATLAB과 비슷합니다

plot(xs, ys) 
show() -- opens window with plot 

창에 플롯을 표시하고 디스크에 기록 할 수있는 능력을 가지고 좋은 것입니다 : 그들은 모두 상태 기계처럼 작동 매우 간단한 인터페이스를 가지고있다.

+2

내가 질문을 편집하고 "하기 matplotlib"와 "NumPy와"를 대체 :이 지침은 당신에게 작업 예를 얻어야한다 내가 틀렸다면 정정해라. – Chris

답변

12

gnuplot? Graphics.Gnuplot.Simple에서 예를 들어

, plotList :하기 matplotlib에서 한 눈에서

plotList [] [(1, 1), (2, 2), (3, 3)] 
+3

'gnuplot'은 좋지만 인터페이스를 간단하게 지정하지는 않습니다. –

+1

외부 응용 프로그램에서 피할 수없는 것을 좋아합니다. 어쨌든 고마워. – Trismegistos

+1

사실 이보다 더 좋은 것은 없습니다. 감사. – Trismegistos

9

, 나는 하스켈 에코 시스템은 다양한 기능과 같은 것을 가지고 있다고 생각하지 않습니다. 그러나 Chart 라이브러리에서 생성 된 결과에 만족해했습니다. graphviz (그 중 하나를 연결하는 링크) 및 Ubigraph에 대한 바인딩도 있습니다.

편집 : (X, Y)을 플로팅에 대한 요청에 응답 좌표 :

내가 당신이 원하는 것을 완전히 명확하지 않다.

import Graphics.Rendering.Chart.Simple 
main = plotWindow [0,0.1..5::Double] sin 

는 점, [(x,y)]의 무리가있는 경우, 목록에 조회와 다음 같은 코드 대신의 : 당신이 다음 함수 f :: x -> y이 있다면 바로 함수 plotWindow (또는 PNG 등)을 사용 sin과 같은 연속 기능이 정상적으로 작동합니다. 여러 가지 예를 보려면 링크 된 페이지를 참조하십시오.

+0

xs에 대해 ys를 플로팅하는 몇 가지 간단한 예제를 제공 할 수 있습니까? 감사. – Trismegistos

5

plot 패키지도 있습니다. GHCi 내에서 plot-gtk 그래프와 함께 사용하면 그래프를 표시하고 수정할 수 있습니다. 플롯은 카이로가 지원하는 형식으로 디스크에 기록 할 수 있습니다.

Simple 인터페이스는 gnuplot 년대와 유사하다 :

test_graph2 = do 
    plot (ts,[point (ds,es) (Cross,red),line fs blue]) 
    title "Testing plot package:" 
    subtitle "with 1 second of a 15Hz sine wave" 
    xlabel "time (s)" 
    ylabel "amplitude" 
    yrange Linear (-1.25) 1.25 
+0

유망 해 보입니다. 시도해 보겠습니다. – Trismegistos

1

해보십시오의 gnuplot. 교차 언어이며 규모가 매우 빠르며 오래된 언어 일지라도 항상 알기 쉽습니다. 난 당신이하기 matplotlib를 의미한다고 가정하지만, 부담없이 - NumPy와는 그래픽/음모를 꾸미고 도서관되지 않기 때문에,

cabal install gnuplot 
sudo apt-get install gnuplot-x11 

ghci 
GHCi, version 7.4.1: http://www.haskell.org/ghc/ :? for help 
Loading package ghc-prim ... linking ... done. 
Loading package integer-gmp ... linking ... done. 
Loading package base ... linking ... done. 
h> import Graphics.Gnuplot.Simple 
h> plotFunc [] (linearScale 1000 (-20,20)) (\x -> sin x/x)