Câu trả lời:
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:
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):
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 .
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.
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.
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.
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.
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è.
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í.
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.
Hãy thử PlotKit
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+.
một cơ bản: http://www.filamentgroup.com/examples/charting_v2/index_2.php
ưa nhìn: http://www.highcharts.com/
Một cái khác là RGraph: biểu đồ Javascript và thư viện đồ thị:
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!
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.
Có rất nhiều hoạt động trong thư viện biểu đồ dojo, và điều tuyệt vời là tôi đang sử dụng nó trong một ứng dụng AIR mà không gặp vấn đề gì, khá tuyệt! Xem ví dụ ở đó http://www.sitepen.com/blog/2008/05/27/dojo-charting-event-support-has-landed/
Hãy xem Google Visualization API , đây là một dạng khái quát của API biểu đồ đơn giản hơn
http://code.google.com.vn/apis/visualization/documentation/gallery.html
Có các tùy chọn tương tác rất tuyệt vời bao gồm bản đồ, đồng hồ đo và biểu đồ.
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.
Hãy thử dòng thời gian mô phỏng MIT có thể được tạo thành biểu đồ - http://simile.mit.edu/timeline/
hoặc cái cuối cùng, http://code.google.com.vn/p/gchart/
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ọ.
Hãy nhìn vào Bluff . Đó là một cổng JavaScript của thư viện đồ họa Gruff cho Ruby.
Protochart là tất cả những gì bạn cần
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.
Đối với các biểu đồ khác thường hơn: http://thejit.org/
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.
Các biểu đồ Fusion có một thư viện javascript / jquery mới trông đầy triển vọng.
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
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.
Hãy xem ZingChart HTML5 Canvas, SVG, VML và Flash Charts . Thư viện rất mạnh mẽ và tương thích. Tôi thuộc nhóm Zing - đề cập đến chúng tôi trên twitter @zingchart hoặc bắn bất kỳ câu hỏi nào tới support@zingchart.com.