2010-07-30 85 views
15

Trong Python 2.6, tôi đã sử dụng matplotlib để tạo một số đồ thị đơn giản. Tuy nhiên, nó không tương thích với Python 3.1.Vẽ đồ thị bằng Python 3.x

Một số mô-đun thay thế có thể thực hiện được điều tương tự mà không bị phức tạp là gì?

+2

Tại sao bạn sử dụng Python 3.1? Tôi sẽ gắn bó với 2.6 trong thời gian này. – nikow

+31

Nếu mọi người nghĩ như vậy, 3.1 sẽ không bao giờ bắt kịp. –

+0

nó sẽ không bắt nếu không tương thích ngược của nó – amadain

Trả lời

17

Bạn nói rằng bạn muốn tạo ra một số đồ thị đơn giản nhưng chưa thực sự nói đơn giản hay loại đồ thị bạn muốn. Miễn là chúng không quá phức tạp, bạn có thể cân nhắc sử dụng Google Chart API.

ví dụ: an example chart

Điều đó có một số lợi thế: bạn chỉ cần tạo một URL mô tả biểu đồ mong muốn để không có bất kỳ vấn đề nào khi sử dụng nó từ Python 3.x. Tất nhiên cũng có những nhược điểm: bạn cần phải có kết nối internet khi tạo biểu đồ, và bạn có thể không có kiểu biểu đồ bạn đã sử dụng với matplotlib.

Nếu bạn không muốn xây dựng URL trực tiếp thì có ít nhất một Python wrapper cho API biểu đồ. Nó không hoạt động trực tiếp trên Python 3.x, nhưng chạy nó qua 2to3 dường như chuyển đổi nó thành công.

+0

Tài liệu API URL được tài liệu ở đâu? –

+0

@MattJoiner, có vẻ như Google đã cập nhật API biểu đồ của họ nên giờ đây các tài liệu chủ yếu nói về các lớp trực quan hóa mới. Hãy thử http://code.google.com/apis/chart/image/docs/making_charts.html cho API URL. – Duncan

+1

Cảm ơn. (SO Y U KHÔNG CHẤP NHẬN <15 CHARS) –

1

Có thể PyQwt? Họ yêu cầu khả năng tương thích 3.x. Tôi chỉ sử dụng Qwt (Pyqwt lib C++ dựa trên) nhưng tôi thấy nó khá hữu ích.

0

Có ít nhất hai thư viện đồ họa sử dụng PyQt, cụ thể là PyQwt và PyQtGraph. Tôi đã sử dụng PyQwt với Python 2.6 trong một vài tuần và nó khá tiện dụng. Các tài liệu không phải là tuyệt vời, và hầu hết thời gian tôi cần phải tham khảo hoặc tài liệu Qwt hoặc các ví dụ - mặc dù thời gian tôi đã phải nhìn vào các tài liệu đã được ít và xa giữa, nó là rất dễ sử dụng . Tôi đã thử xây dựng nó chống lại python 3.1 ngay bây giờ mặc dù không thành công. Tôi coulnd't tìm gói tar cho 5.2.1 đó là phiên bản duy nhất tương thích với python 3.0 và không có bất cứ điều gì trên MacPorts cho rằng một trong hai.

Ngoài ra còn có một danh sách khá hoàn chỉnh tìm kiếm các thư viện âm mưu trên tại python.org http://wiki.python.org/moin/NumericAndScientific/Plotting

1

rpy2 đang cung cấp quyền truy cập vào các khả năng đồ họa của R, và rpy2 đang trở thành tương thích với Python 3 (nhờ sự giúp đỡ của Google tài trợ cho Greg trong mùa hè).

Mã chống chi nhánh nhà phát triển hiện tại nằm trong số patch queue.

chỉnh sửa: rpy2 2.2.0 đang phối hợp với Python 3.2

3

Tôi đã viết một ví dụ nhỏ chạy trong python 3 và sử dụng google chart api (theo đề nghị của Duncan, tôi đã viết các giải pháp sau khi nhìn thấy bài viết này) . Nó không phải là lý tưởng vì nó thêm một phụ thuộc một bên thứ 3 có thể phá vỡ khả năng tương thích ngược bất cứ lúc nào, nhưng các đồ thị là tốt đẹp và hoàn toàn không phụ thuộc vào mã python. Đáng xem xét vì không phải là 'mã quan trọng nhiệm vụ'.

Bạn có thể find/download the example here. Đây là biểu đồ mà nó tạo ra từ dữ liệu trong a.tập tin xml: alt text

# build the query with template parameters 
query ="http://chart.apis.google.com/chart?chxl=0:__X_LABELS__&chxp=__X_LABELS_POS__&chxr=0,__MIN_TIME__,__MAX_TIME__|1,__MIN_WEIGHT__,__MAX_WEIGHT__&chxs=0,676767,11.5,0,lt,676767|1,676767,11.5,0,lt,676767&chxt=x,y&chs=800x300&cht=lc&chco=3072F3&chds=__MIN_WEIGHT__,__MAX_WEIGHT__&chd=t:__COMMASEP_WEIGHT__&chdl=Weight&chdlp=b&chls=2,4,1&chma=5,5,5,25&chtt=Your+Weight+Timeline" 

[...] 

# relace template with data 
query = query.replace('__X_LABELS__', strXLabels) 
query = query.replace('__X_LABELS_POS__', strXLabelsPos) 
query = query.replace('__MIN_TIME__', str(min(lst_dateEpoch))) 
query = query.replace('__MAX_TIME__', str(max(lst_dateEpoch))) 

[...] 

# use 'urllib.request' to download the data & write to file 
sock = urllib.request.urlopen(query) 
image_bytes = sock.read() 
sock.close() 

fh = open('Weight_GoogleGraphApi.png', 'wb') 
fh.write(image_bytes) 
fh.close() 
+1

Tài liệu API URL được viết ở đâu? –

+0

Hướng dẫn API URL biểu đồ: http://psychopyko.com/tutorial/how-to-use-google-charts/ Tham chiếu hiện nói "không dùng nữa": http://developers.google.com/chart/image/docs/chart_params API biểu đồ, trang chính: http://developers.google.com/chart/ Biểu đồ API ref dường như tất cả Javascript bây giờ: http://developers.google.com/chart/ tương tác/tài liệu/tham chiếu Thư viện mẫu: http://google-developers.appspot.com/chart/interactive/docs/gallery Ví dụ về Linechart, "xem nguồn": http://google-developers.appspot.com/chart/interactive/docs/gallery/linechart Đồng thời: http://en.wikipedia.org/wiki/Google_Chart_API –

11

Một phiên bản ổn định hỗ trợ Python 3 từ đó đã được phát hành: official announcement.

+5

Tôi sẽ nói _a lot_ of progress :) (nó đã được làm việc tốt cho tôi) https://github.com/matplotlib/matplotlib-py3 (Tôi biết chủ đề này là cũ - nhưng xếp hạng cao về kết quả cho "matplotlib python3" trong google) – mgalgs

+0

Tôi nhận được trường hợp ngoại lệ lame khi cố gắng để lưu số liệu. –

+0

Kiểm tra http://www.lfd.uci.edu/~gohlke/pythonlibs/#matplotlib –

1

MathGL (thư viện vẽ đồ GPL) có giao diện Python cũng hoạt động với Python 3.

Các vấn đề liên quan