Biểu đồ và biểu đồ đẹp trong Python [đã đóng]


130

Các thư viện có sẵn để tạo biểu đồ và đồ thị đẹp trong ứng dụng Python là gì?


22
Tôi không chắc tại sao cái này lại bị đóng cửa. Nó không mời các cuộc chiến tranh nảy lửa hoặc ý kiến, và có một bộ câu trả lời rõ ràng: chỉ có một số thư viện âm mưu Python.
Alex B

7
Tại sao điều này bị đóng cửa? Đây là một câu hỏi hữu ích. Dù sao, đề nghị của tôi là pip search plotvà nhìn vào những gì đi lên. Tôi phát hiện ra pygal bằng cách này, và pygal trông thật tuyệt.
Đánh dấu E. Haase

Cũng đáng lưu ý rằng câu hỏi này xuất hiện trên một tìm kiếm google cho "biểu đồ trăn" - đủ lý do để mở lại.
George Lund

Câu hỏi này rất hữu ích, không nên đóng lại. Các tùy chọn khác bao gồm bokehhộp pyx
atomh33ls

Câu trả lời:


50

Tôi là người hỗ trợ CairoPlot và tôi rất tự hào khi nó xuất hiện ở đây. Chắc chắn matplotlib là tuyệt vời, nhưng tôi tin rằng CairoPlot đẹp hơn. Vì vậy, đối với các bài thuyết trình và trang web, đó là một lựa chọn rất tốt.

Hôm nay tôi phát hành phiên bản 1.1. Nếu quan tâm, hãy xem thử tại CairoPlot v1.1

EDIT: Sau một mùa đông dài và lạnh lẽo, CairoPlot đang được phát triển trở lại. Kiểm tra phiên bản mới trên GitHub .


2
Có vẻ tốt, tôi muốn thử nó. Bất kỳ kế hoạch để thực hiện một trình cài đặt windows cho python 2.6?
monkut

Không có vấn đề cho sự hỗ trợ, như tôi đồng ý về nó. Cảm ơn lời khen: D
Rodrigo

Chỉ cần thêm stackoverflow.com/questions/359727#520049 để bạn downvote, nếu bạn muốn.
VonC

1
Cairoplot thực sự không hoạt động tốt với số lượng lớn dữ liệu (sửa tôi nếu tôi sai). Bạn không thể thêm nhãn vào trục để tóm tắt hlabels hoặc vlabels. Dù sao tôi cũng không thể nhìn thấy để vẽ nhiều đường trên biểu đồ hoặc có bất kỳ sự kiểm soát nào đối với các màu được sử dụng. Tôi có thể hack đi kịch bản ... chuyển sang matplotlib ...
Jon

Mọi người nên bỏ qua bình luận của Jon, rất dễ dàng để gắn nhãn trục và xác định màu sắc được sử dụng ... Kiểm tra ví dụ để kiểm tra ví dụ. Dù sao, cảm ơn cho một lib tốt đẹp.
Daniel Magnusson

38

Đối với công việc tương tác, Matplotlib là tiêu chuẩn trưởng thành. Nó cung cấp API kiểu OO cũng như API tương tác kiểu Matlab.

Chaco là một thư viện âm mưu hiện đại hơn từ những người ở Enth think. Nó sử dụng thư viện vẽ vector Kiva của Enth think và hiện chỉ hoạt động với Wx và Qt với OpenGL trên đường (Matplotlib có các phụ trợ cho Tk, Qt, Wx, Ca cao và nhiều loại hình ảnh như PDF, EPS, PNG, v.v.). Ưu điểm chính của Chaco là tốc độ của nó so với Matplotlib và sự tích hợp của nó với API Traits của Enth think cho các ứng dụng tương tác.


2
Tôi đồng ý rằng trong tất cả các API - matplotlib dường như thực sự là người trưởng thành và giàu tính năng nhất (và vẫn được hỗ trợ và được phát triển thêm). Chỉ cần truy cập vào "bộ sưu tập" của nó để xem các ví dụ khác nhau (với mã nguồn): matplotlib.sourceforge.net/gallery.html . Tuy nhiên, tôi muốn nói rằng API của nó là, ..., phức tạp - tên phương thức đang khiến tôi phát điên :) Nói về các ví dụ "phức tạp" và đơn giản - bài đăng trên blog này đã giúp tôi rất nhiều để bắt đầu với matplotlib: shreevatsa.wordpress .com / 2010/03/07 / matplotlib-guide
Timur

Xin lỗi, tôi cũng phải thêm, matplotlib không chỉ tương tác - bạn thực sự có thể lưu biểu đồ / biểu đồ vào một tệp. Dành cho người cũ PNG, PDF hoặc SVG.
Timur

18

Bạn cũng có thể sử dụng pygooglechart , sử dụng API Google Biểu đồ . Đây không phải là thứ bạn luôn muốn sử dụng, nhưng nếu bạn muốn có một số lượng nhỏ các biểu đồ tốt, đơn giản và luôn trực tuyến và đặc biệt là nếu bạn vẫn hiển thị trên trình duyệt thì đó là một lựa chọn tốt.


7
Một lời cảnh báo, các biểu đồ mà Google cho phép bạn tạo khá hạn chế về kích thước (chiều rộng * chiều cao <= 300.000 pixel). Ngoài ra, Google Charts (không phải API Python) sẽ bị nghẹt với các tập dữ liệu có kích thước khiêm tốn. Mặt khác, chúng rất tuyệt.
Pat Notz

1
Biểu đồ Google Image vẫn có sẵn, nhưng không dùng nữa. Để biết thêm thông tin, hãy truy cập developers.google.com/chart/image/?hl=nl
ndequeker

15

Bạn đã không đề cập đến định dạng đầu ra nào bạn cần nhưng reportlab rất giỏi trong việc tạo biểu đồ cả ở định dạng pdf và bitmap (ví dụ png).

Dưới đây là một ví dụ đơn giản về một barchart ở định dạng png và pdf:

from reportlab.graphics.shapes import Drawing
from reportlab.graphics.charts.barcharts import VerticalBarChart

d = Drawing(300, 200)

chart = VerticalBarChart()
chart.width = 260
chart.height = 160
chart.x = 20
chart.y = 20
chart.data = [[1,2], [3,4]]
chart.categoryAxis.categoryNames = ['foo', 'bar']
chart.valueAxis.valueMin = 0

d.add(chart)
d.save(fnRoot='test', formats=['png', 'pdf'])

văn bản thay thế http://i40.tinypic.com/2j677tl.jpg

Lưu ý: hình ảnh đã được chuyển đổi thành jpg bởi máy chủ hình ảnh.


2
Nếu nhận được một ngoại lệ "RenderPMError: Không thể đặtFont (Times-Roman) thiếu các tệp T1?" (như tôi đã nhận) trên d.save trong đoạn mã trên - Giải pháp là tải xuống và trích xuất reportlab.org/ftp/fonts/pfbfer.zip trong thư mục báo cáo / fornts
Shekhar

+1 cho nỗ lực tạo ra một ví dụ thực tế.
vmassuchetto

6

2
Tại sao nó lại tốt? Bạn đã sử dụng nó?
Nick

Có, tôi đã sử dụng dot_line_plot () trong các công cụ báo cáo / thống kê. Thật đẹp và dễ dàng. Xem phản hồi hàng đầu từ Rodrigo về Matplotlib và CairoPlot. Tôi cũng sử dụng Matplotlib. Trong thực tế, tôi đang sử dụng nó ngay bây giờ.
elmarco

Những người kỳ lạ chưa bắt được câu trả lời của bạn, nhưng câu trả lời được bình chọn hàng đầu hiện nay.
pieaveragy

Tôi nghĩ rằng điều này sẽ nhận được nhiều sự ủng hộ hơn nếu có một ví dụ tối thiểu. Câu trả lời của bạn sẽ trở nên vô dụng khi liên kết đã chết.
Martin Thoma

cảm ơn, blog đã có rất nhiều thông tin và chính tác giả đã trả lời ở đây với nhiều chi tiết sau.
elmarco

6

Tôi đã sử dụng pychart và nghĩ rằng nó rất đơn giản.

http://home.gna.org/pychart/

Đó là tất cả trăn bản địa và không có một khối lượng phụ thuộc. Tôi chắc chắn matplotlib rất đáng yêu nhưng tôi sẽ tải xuống và cài đặt trong nhiều ngày và tôi chỉ muốn một biểu đồ thanh sởi!

Nó dường như không được cập nhật trong một vài năm, nhưng nó hoạt động!


4

Bạn đã xem qua ChartDirector cho Python chưa?

Tôi không thể nói về điều này, nhưng tôi đã sử dụng ChartDirector cho PHP và nó khá tốt.


ChartDirector hoạt động tốt với Python. Tôi đã sử dụng nó thường xuyên để sản xuất các lô đa dòng.
pwdyson


4

Nếu bạn muốn sử dụng gnuplot cho âm mưu, bạn nên xem xét Gnuplot.py . Nó cung cấp giao diện hướng đối tượng cho gnuplot và cũng cho phép bạn truyền lệnh trực tiếp đến gnuplot. Thật không may, nó không còn được phát triển tích cực.




3

Tôi là một người hâm mộ trên PyOFC2: http://btbytes.github.com/pyofc2/

Nó chỉ là một gói giúp dễ dàng tạo dữ liệu JSON cần thiết cho Open Flash Charts 2, rất đẹp. Kiểm tra các ví dụ trên các liên kết ở trên.



0

Bạn cũng có thể xem xét biểu đồ google .

Về mặt kỹ thuật không phải là API python, nhưng bạn có thể sử dụng nó từ python, nó rất nhanh để mã hóa và kết quả có xu hướng trông rất đẹp. Nếu bạn tình cờ sử dụng các lô của bạn trực tuyến, thì đây sẽ là một giải pháp thậm chí tốt hơn.


0

PLplot là gói phần mềm đa nền tảng để tạo ra các lô khoa học. Chúng không đẹp lắm (bắt mắt), nhưng trông chúng đủ đẹp. Hãy xem một số ví dụ (cả mã nguồn và hình ảnh).

Thư viện lõi PLplot có thể được sử dụng để tạo các ô xy tiêu chuẩn, các ô bán nhật ký, các ô log-log, các ô viền, các ô bề mặt 3D, các ô lưới, biểu đồ thanh và biểu đồ hình tròn. Nó chạy trên Windows (2000, XP và Vista), Linux, Mac OS X và các Unice khác.

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.