Thư viện biểu đồ JavaScript


223

Có ai muốn giới thiệu một thư viện biểu đồ JavaScript cụ thể - cụ thể là một thư viện hoàn toàn không sử dụng flash không?

Câu trả lời:


160

Ngày càng có nhiều giải pháp thương mại và nguồn mở cho biểu đồ JavaScript thuần túy không yêu cầu Flash. Trong phản hồi này, tôi sẽ chỉ trình bày các tùy chọn Nguồn mở.

Có 2 loại giải pháp JavaScript chính cho đồ họa không yêu cầu Flash:

  • Dựa trên Canvas, được hiển thị trong IE bằng ExplorerCanvas, lần lượt dựa vào VML
  • SVG trên các trình duyệt dựa trên tiêu chuẩn, được hiển thị dưới dạng VML trong IE

Có những ưu và nhược điểm của cả hai cách tiếp cận nhưng đối với thư viện biểu đồ tôi sẽ đề xuất sau vì nó được tích hợp tốt với DOM, cho phép thao tác các thành phần biểu đồ với DOM và quan trọng nhất là thiết lập các sự kiện DOM. Ngược lại, các thư viện biểu đồ Canvas phải phát minh lại bánh xe DOM để quản lý các sự kiện. Vì vậy, trừ khi bạn có ý định xây dựng các biểu đồ tĩnh mà không xử lý sự kiện, các giải pháp SVG / VML sẽ tốt hơn.

Đối với các giải pháp SVG / VML, có nhiều tùy chọn, bao gồm:

Raphael là một thư viện đồ họa mã nguồn mở rất tích cực, được bảo trì tốt và trưởng thành với sự hỗ trợ trình duyệt chéo rất tốt bao gồm IE 6 đến 8, Firefox, Opera, Safari, Chrome và Konqueror. Raphael không phụ thuộc vào bất kỳ khung JavaScript nào và do đó có thể được sử dụng với Prototype, jQuery, Dojo, Mootools, v.v.

Có một số thư viện biểu đồ dựa trên Raphael, bao gồm (nhưng không giới hạn):

  • gRaphael , một phần mở rộng của thư viện đồ họa Raphael
  • Ico , với API trực quan dựa trên một lệnh gọi hàm duy nhất để tạo các biểu đồ phức tạp

Tiết lộ: Tôi là nhà phát triển của một trong những nhánh của Ico trên github .


5
Grafico và Ico là hai nhánh không tương thích của Ico ban đầu của Alex Young. Vì vậy, không chính xác khi tuyên bố rằng Ico đã trở thành Grafico. Grafico chỉ là một trong những dĩa.
Jean Vincent

Cần lưu ý rằng Raphael dường như không còn được duy trì. Cam kết cuối cùng là tháng 7 năm 2010 hoặc lâu hơn.
Alastair Forge

1
Chỉ cần tải xuống các biểu đồ raphael, thích nó rất nhiều nhưng không có tài liệu, chỉ để báo trước.
Quỹ đạo

@Alastair: Raphael hiện được tài trợ và phát triển bởi Sencha ... hoặc họ nói vậy :)
Roy Tinker

1
SVG không được hỗ trợ trong Android tiền tổ ong. Nếu có thể xem các biểu đồ trên một loạt các thiết bị Android hiện tại là một yêu cầu, bạn phải chọn một giải pháp dựa trên Canvas. Bài viết này về Biểu đồ Sencha Touch nói chi tiết hơn về biểu đồ di động nói chung và lý do tại sao Sencha Touch đi theo con đường Canvas.
Pallavi Anderson

70

Nếu bạn đang sử dụng jQuery, tôi thấy flot rất tốt - hãy thử các ví dụ để xem chúng có phù hợp với nhu cầu của bạn không, nhưng tôi đã thấy chúng làm hầu hết những gì tôi cần cho dự án hiện tại của mình.

Ngoài ra, ExtJS 4.0 đã giới thiệu một bộ biểu đồ tuyệt vời - rất mạnh mẽ và được thiết kế để hoạt động với dữ liệu trực tiếp.


2
Đây là cùng thư viện mà Geoff Dalgas đã sử dụng để tạo biểu đồ danh tiếng ở đây trên StackOverflow. Nó thực sự là một chút tốt đẹp của bộ.
Charles Roper

Khiếu nại thực sự duy nhất của tôi về flot là khi kết xuất trong IE trông rất tệ ở bất kỳ mức thu phóng nào khác 100% (tức là tất cả các dòng / khối không kết hợp với nhau - đây chắc chắn là một vấn đề đối với những người có màn hình độ phân giải cao).
Bittercoder

2
Có vẻ như các biểu đồ flot trông đẹp hơn so với nhiều biểu đồ khác mà tôi đã xem. Đây là một liên kết đến 20 thư viện biểu đồ JavaScript: javascript.open-lologists.com/utilities/chart/ Kẻ
B Bảy

Tôi cũng thích flot, đã sử dụng điều này nhiều lần trên các ứng dụng web khác nhau trước đây.
fedmich

1
Tôi thích flot nói chung nhưng nó muốn tất cả dữ liệu là số, vì vậy nếu bạn muốn vẽ một cái gì đó như doanh số trên mỗi khách hàng (theo tên) hoặc mỗi sản phẩm thì nó sẽ không hoạt động
Zachary K

60

Hãy xem http://www.highcharts.com !

Highcharts là một thư viện biểu đồ được viết bằng JavaScript thuần túy, cung cấp một cách dễ dàng để thêm các biểu đồ tương tác vào trang web hoặc ứng dụng web của bạn. Highcharts hiện hỗ trợ các loại biểu đồ đường, spline, area, areapline, cột, bar, pie và scatter.


12
Worth chỉ ra rằng thư viện này là miễn phí cho sử dụng phi thương mại, nhưng chi phí tiền cho các trang web đơn và đa trang web. Có vẻ như một mức giá khá hợp lý tuy nhiên.
Nick Spacek

Lúc đầu, nó là một phích cắm không biết xấu hổ nhưng chúng trông thật sự tuyệt vời !! Mặc dù nó không được sử dụng miễn phí cho mục đích thương mại, tôi không có tài liệu tham khảo nào về giá cả có hợp lý hay không nhưng nhìn thoáng qua!
Trufa

Đây là cùng một thư viện biểu đồ được sử dụng trong CloudFlare.com và nó trông thực sự tuyệt vời. Tôi chuẩn bị sử dụng thư viện biểu đồ DevExpress, đó là ASP.NET và kết xuất và hình ảnh trong máy chủ khi tôi tình cờ thấy thư viện highcharts. Tôi đã bị thuyết phục ngay lập tức rằng đây là con đường để đi. Khi tôi phát hiện ra rằng CloudFlare, một trong những bảng điều khiển / phân tích bắt mắt nhất mà tôi đã thấy, tôi cũng đã sử dụng nó! Tôi hiện đang thử nghiệm với nó và nó đã hoạt động trong lần thử đầu tiên của tôi để nhúng biểu đồ vào trang web của tôi ... vì vậy nó cũng có vẻ dễ sử dụng!
Lâu đài

1
Thêm một phiếu bầu cho Highcharts. Tôi hiện đang sử dụng nó, và nó là tuyệt vời. Hỗ trợ jQuery, Mootools và Prototype và rất dễ cài đặt và sử dụng.
gnclmorais

1
Bản thân Stackoverflow sử dụng highcharts stackoverflow.com/users/22656/jon-skeet?tab=reputation
Scott

36

Nó có thể không chính xác những gì bạn đang tìm kiếm, nhưng
API Biểu đồ của Google khá thú vị và dễ sử dụng.


16
nó không phải là javascript
user102008

5
chỉ cần nhớ, Biểu đồ Google yêu cầu kết nối internet và cũng có một số giới hạn về số lượng yêu cầu của khách hàng được cho phép
fedmich

@ user102008: bây giờ :) (Bạn vẫn có thể truy cập API dựa trên hình ảnh cũ nếu muốn)
Spycho

API biểu đồ của Google không thể được sử dụng ngoại tuyến, không tốt cho phát triển di động.
Oldwizard

Tôi cần phải làm một Candlestick loại ngang, bất cứ ai biết nếu nó có thể với api biểu đồ google?
Tom Stickel

15

Có một thư viện javascript khác dựa trên SVG. Nó được gọi là Protovis và nó đến từ Stanford Visualization Group

Nó cũng cho phép làm cho đồ họa tương tác tốt và trực quan hóa.

http://vis.stanford.edu/protovis/ex/

Mặc dù nó chỉ dành cho các trình duyệt web hiện đại

CẬP NHẬT: Nhóm protovis đã chuyển sang một thư viện khác gọi là d3.js (Tài liệu hướng dữ liệu) như họ nói:

"Nhóm Protovis hiện đang phát triển một thư viện trực quan mới, D3.js, với sự hỗ trợ được cải thiện cho hoạt hình và tương tác. D3 xây dựng trên nhiều khái niệm trong Protovis"

Thư viện mới hiện có thể được tìm thấy trong:

http://mbostock.github.com/d3/

CẬP NHẬT 2:

"Rickshaw" là bộ công cụ JavaScript để tạo các biểu đồ chuỗi thời gian tương tác. Dựa trên d3.js giúp đơn giản hóa rất nhiều công việc với d3.js mặc dù ít mạnh hơn một chút.

http://code.shutterstock.com/rickshaw/


Dựa trên một cái nhìn nhanh, tôi không nghĩ D3 "thay thế" Protovis. Tôi sẽ nói rằng nhóm "tiến lên" bởi vì họ thấy nó thú vị và chặt chẽ hơn.
David J.

14

Gần đây tôi đã tìm kiếm một thư viện biểu đồ javascript và tôi đã đánh giá cả đống trước khi cuối cùng giải quyết trên jqplot phù hợp với yêu cầu của tôi rất tốt. Như câu trả lời của Jean Vincent đã đề cập, bạn thực sự lựa chọn giữa giải pháp dựa trên canvas và svg.

Đối với tôi, những ưu và nhược điểm chính như sau. Các giải pháp dựa trên SVG như Raphael (và offshoots) là tuyệt vời nếu bạn muốn xây dựng các biểu đồ tương tác / năng động cao. Hoặc nếu bạn yêu cầu biểu đồ rất nhiều ngoài định mức (ví dụ: bạn muốn tạo một loại biểu đồ lai hoặc bạn đã đưa ra một hình dung mới mà chưa ai nghĩ đến). Nhược điểm là đường cong học tập và số lượng mã bạn sẽ phải viết. Bạn sẽ không đập ra các biểu đồ trong vài phút, hãy chuẩn bị đầu tư thời gian học thực sự và sau đó viết một số lượng mã tốt để tạo ra một biểu đồ tương đối đơn giản.

Nếu các yêu cầu biểu đồ của bạn là tiêu chuẩn hợp lý, ví dụ: bạn muốn một số biểu đồ đường hoặc thanh hoặc có thể là biểu đồ hình tròn hoặc hai, với khả năng tương tác hạn chế, thì đáng để xem xét các giải pháp dựa trên canvas. Hầu như không có bất kỳ đường cong học tập nào, bạn sẽ có thể có được các biểu đồ cơ bản trong vòng vài phút, bạn sẽ không cần phải viết nhiều mã, một vài dòng javascript / jquery cơ bản sẽ là tất cả những gì bạn cần. Tất nhiên bạn sẽ chỉ có thể tạo ra các loại biểu đồ cụ thể mà thư viện hỗ trợ, thường giới hạn ở các hương vị khác nhau của dòng, thanh, bánh. Các lựa chọn tương tác sẽ vô cùng hạn chế, nghĩa là không tồn tại đối với nhiều thư viện ngoài kia, mặc dù một số hiệu ứng di chuột hạn chế là có thể với những cái tốt hơn.

Tôi đã đi với JQplot, một giải pháp dựa trên canvas vì tôi chỉ thực sự cần một số loại biểu đồ tiêu chuẩn. Từ nghiên cứu của tôi và chơi xung quanh với các lựa chọn khác nhau, tôi thấy nó có đầy đủ tính năng (nếu bạn chỉ sau các biểu đồ tiêu chuẩn) và cực kỳ dễ sử dụng, vì vậy tôi sẽ khuyên bạn nên sử dụng nếu yêu cầu của bạn tương tự.

Để tóm tắt, đơn giản và muốn biểu đồ ngay bây giờ, sau đó đi với JQplot. Phức tạp / khác biệt và không bị ép thời gian sau đó đi với Raphael và bạn bè.


14

jqPlot là tuyệt vời. Nếu các yêu cầu của bạn khá "bình thường" và bạn chỉ muốn vẽ một số biểu đồ, có lẽ bạn sẽ bị choáng ngợp bởi số lượng tùy chọn biểu đồ js. Giả sử bạn không muốn thực hiện nhiều giờ nghiên cứu, chỉ cần đi với jqPlot vì đó có thể là lựa chọn tốt nhất của bạn. Nó bao gồm hầu hết các trường hợp sử dụng cho hầu hết mọi người tốt. Một số lựa chọn thay thế được chuyên về một loại biểu đồ nhất định hoặc được xây dựng với một trường hợp sử dụng nhất định trong tâm trí.


Tôi cũng nghĩ như vậy sau khi thực hiện một số nghiên cứu. Ngay bây giờ, nó trông giống như một trong những thư viện biểu đồ JS miễn phí tốt nhất hiện có.
jturcotte

4

Là một số loại câu trả lời muộn, hãy thử d3.js
http://mbostock.github.com/d3/

Đó là sự tiếp nối của động vật nguyên sinh.
Sự khác biệt lớn đối với flot là ở số lượng tính năng được hỗ trợ.
Mặc dù flot có thể đơn giản hơn, d3.js chắc chắn mạnh hơn.




3

Tôi muốn giới thiệu gRaphaël cho biểu đồ JavaScript thuần cùng với thư viện đồ họa vector thuần JavaScript được xây dựng trên ( Raphaël ).

gRaphaël hiện hỗ trợ Firefox 3.0+, Safari 3.0+, Opera 9.5+ và Internet Explorer 6.0+.


1
chỉ muốn đưa ra những cái đầu rằng không có tài liệu cho lib này, mặc dù nó rất hay.
Quỹ đạo


3

Một cái khác là RGraph: biểu đồ Javascript và thư viện đồ thị:

http://www.rgraph.net

Canvas dựa trên nó rất nhanh và có khoảng 20 loại biểu đồ khác nhau. Nó cũng miễn phí cho sử dụng phi thương mại!


2

Yêu thích của tôi (flot) đã được đề cập.

Nhưng hãy chắc chắn để điều tra Ortho . Nó là tuyệt vời cho biểu đồ cây và thời gian.





2

Chúng tôi vừa mua giấy phép của TechOctave Charts Suite cho startup mới của chúng tôi. Tôi đánh giá cao họ. Cấp giấy phép rất đơn giản. Biểu đồ trông thật tuyệt! Thật dễ dàng để bắt đầu và có một API mạnh mẽ khi chúng ta cần nó. Tôi đã bị sốc bởi cách mã sạch và có thể mở rộng. Thực sự hạnh phúc với sự lựa chọn của chúng tôi.



1

Không phải là thư viện Javascript nhưng nó có thể là một giải pháp thay thế phù hợp - hãy xem Biểu đồ của Google nơi bạn có thể tạo biểu đồ bằng cách chuyển dữ liệu chuỗi truy vấn đến dịch vụ web của họ.




1

Sencha mua lại Raphael và bây giờ các biểu đồ của họ là javascript thuần túy cho đến phiên bản 4. Emident và HighCharts được đề cập ở trên là hai mục yêu thích của tôi.

http://www.sencha.com/



0

Tôi có thể giới thiệu ArcadiaCharts . Một thư viện biểu đồ chuyên nghiệp hoàn toàn mới cho JavaScript và GWT. Chạy trong tất cả các trình duyệt mà không cần plugin. Dễ dàng và nhanh chóng để sử dụng: tạo các biểu đồ tìm kiếm tuyệt vời chỉ với một vài dòng mã. Miễn phí cho sử dụng phi thương mại.


Tôi đã chơi xung quanh vấn đề này và tôi nhận thấy không có cách nào để có được giấy phép thương mại trên trang web. Trên thực tế, trang web không rõ liệu điều này có miễn phí hay không.
bảo vệ zumalififard

Bạn đúng rồi. Trang web đã được cập nhật, để bây giờ bạn có thể dễ dàng tìm ra giấy phép thương mại nào phù hợp với yêu cầu của bạn: ArcadiaCharts .
Hoàng-Trần Võ


0

Trong trường hợp những gì bạn cần là chỉ biểu đồ thanh. Tôi đã xuất bản một số mã tôi đã sử dụng trong một dự án cũ. Có người nói với tôi rằng việc triển khai VML bị hỏng trên các phiên bản IE gần đây, nhưng SVG sẽ hoạt động tốt. Có thể quay lại dự án và phát hành một số trình kết xuất máy chủ mà tôi đã có và có thể là lớp kết xuất WebGL. Có một liên kết: http://blog.conquex.com/?p=64


0

Có lẽ không phải là những gì OP đang tìm kiếm, nhưng vì câu hỏi này đã trở thành một danh sách các tùy chọn thư viện biểu đồ JS: jQuery Sparklines thực sự rất tuyệt.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.