2012-01-26 38 views
27

Có thư viện Haskell để vẽ các ô tương tự như MATLAB, scilab hoặc matplotlib không? Tất cả đều có giao diện rất đơn giản, hoạt động giống như máy trạng thái:Thư viện vẽ bản đồ Haskell tương tự như MATLAB

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

Sẽ rất thú vị khi hiển thị ô trong cửa sổ và có khả năng ghi chúng vào đĩa.

+2

tôi thay đổi nội dung câu hỏi của bạn và thay thế "NumPy" với "matplotlib", vì NumPy không phải là một đồ họa/âm mưu thư viện - Tôi cho rằng bạn có nghĩa là matplotlib, nhưng cảm thấy tự do để sửa nó nếu tôi sai. – Chris

Trả lời

12

Còn khoảng gnuplot thì sao?

Ví dụ, plotList từ Graphics.Gnuplot.Simple:

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

'gnuplot' là tốt, nhưng tôi sẽ không gọi giao diện của nó đơn giản. –

+1

Tôi không thích phụ thuộc vào các ứng dụng bên ngoài. Dù sao cũng cảm ơn bạn. – Trismegistos

+1

Tôi thấy rằng trên thực tế không có gì tốt hơn điều này. Cảm ơn. – Trismegistos

9

Từ trong nháy mắt tại matplotlib, tôi không nghĩ rằng hệ sinh thái Haskell có bất cứ điều gì như tính năng phong phú. Tuy nhiên, tôi đã hài lòng với kết quả được tạo bởi thư viện Chart. Ngoài ra còn có các ràng buộc để graphviz (liên kết một trong một số) và Ubigraph.

Chỉnh sửa: Trả lời yêu cầu vẽ tọa độ (x, y):

Tôi không hoàn toàn rõ ràng những gì bạn muốn. Nếu bạn có một hàm f :: x -> y sau đó chỉ cần sử dụng chức năng plotWindow (hoặc PNG, vv):

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

Nếu bạn có một loạt các điểm, [(x,y)], sau đó cùng mã với một tra cứu vào danh sách, thay vì một chức năng liên tục như sin, nên hoạt động tốt. Xem trang được liên kết cho nhiều ví dụ.

+0

Bạn có thể đưa ra một ví dụ rất đơn giản về âm mưu chống lại xs? Cảm ơn. – Trismegistos

5

Ngoài ra còn có gói plot. Khi được sử dụng với plot-gtk biểu đồ có thể được hiển thị và sửa đổi trong GHCi. Các lô có thể được ghi vào đĩa theo các định dạng mà Cairo hỗ trợ.

Giao diện Simple cũng tương tự như gnuplot 's:

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

Có vẻ đầy hứa hẹn, tôi sẽ thử. – Trismegistos

1

Hãy thử gnuplot. Đó là ngôn ngữ chéo, khá nhanh về quy mô và luôn là điều tốt đẹp để biết, ngay cả khi nó cũ. Những hướng dẫn sẽ giúp bạn có một ví dụ làm việc:

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) 
Các vấn đề liên quan