Ładne wykresy i wykresy w Pythonie [zamknięte]


130

Jakie są dostępne biblioteki do tworzenia ładnych wykresów i wykresów w aplikacji Python?


22
Nie jestem pewien, dlaczego ten został zamknięty. Nie wywołuje płomiennych wojen ani opinii i ma zestaw jasnych odpowiedzi: istnieje tylko kilka bibliotek kreślących w Pythonie.
— Alex B

7
Dlaczego to jest zamknięte? To przydatne pytanie. W każdym razie, radzę pip search plotprzyjrzeć się temu, co się pojawi. Robiąc to, odkryłem Pigala i wygląda świetnie.
— Mark E. Haase,

Warto również zauważyć, że to pytanie pojawia się na początku wyszukiwania Google pod hasłem „charting python” - to wystarczający powód, aby ponownie je otworzyć.
— George Lund

To pytanie jest przydatne, nie powinno być zamykane. Inne opcje obejmują bokeh i PyX
— atomh33ls

Odpowiedzi:


50

To ja wspieram CairoPlot i jestem bardzo dumny, że się tu pojawił. Z pewnością matplotlib jest świetne, ale uważam, że CairoPlot wygląda lepiej. Tak więc w przypadku prezentacji i stron internetowych jest to bardzo dobry wybór.

Dzisiaj wydałem wersję 1.1. Jeśli jesteś zainteresowany, sprawdź to w CairoPlot v1.1

EDYCJA: Po długiej i mroźnej zimie, CairoPlot jest ponownie rozwijany. Sprawdź nową wersję na GitHub .


2
Wygląda dobrze, chciałbym spróbować. Czy planujesz stworzyć instalator systemu Windows dla Pythona 2.6?
— monkut

Nie ma problemu ze wsparciem, bo się na to zgadzam. Dzięki za komplement: D
— Rodrigo,

Właśnie dodałem stackoverflow.com/questions/359727#520049, abyś mógł zagłosować przeciw, jeśli chcesz.
— VonC

1
Cairoplot naprawdę nie działa jednak tak dobrze dla dużych ilości danych (popraw mnie, jeśli się mylę). Nie możesz dodawać etykiet do osi, aby podsumować hlabels lub vlabels. W każdym razie nie widzę możliwości wykreślenia wielu linii na wykresie ani żadnej kontroli nad używanymi kolorami. Mógłbym odciąć się od scenariusza ... przechodząc do matplotlib ...
— Jon

Każdy powinien zignorować komentarz Jona, bardzo łatwy do oznaczenia osi i zdefiniowania użytych kolorów ... Zobacz przykłady w tests.py. W każdym razie, dzięki za miłą lib.
— Daniel Magnusson

38

W przypadku pracy interaktywnej Matplotlib jest dojrzałym standardem. Zapewnia interfejs API w stylu OO, a także interaktywny interfejs API w stylu Matlab.

Chaco to bardziej nowoczesna biblioteka fabularna stworzona przez ludzi z Enthought. Korzysta z biblioteki rysunków wektorowych Enthought Kiva i obecnie działa tylko z Wx i Qt z OpenGL po drodze (Matplotlib ma zaplecze dla Tk, Qt, Wx, Cocoa i wielu typów obrazów, takich jak PDF, EPS, PNG itp.). Głównymi zaletami Chaco są jego szybkość w stosunku do Matplotlib i integracja z interfejsem Enthought Traits API dla aplikacji interaktywnych.


2
Zgadzam się, że ze wszystkich API - matplotlib wydaje się być rzeczywiście najbardziej dojrzałym i bogatym w funkcje (a także jest nadal obsługiwany i rozwijany). Po prostu przejdź do jego „galerii”, aby zobaczyć różne przykłady (z odpowiednim kodem źródłowym): matplotlib.sourceforge.net/gallery.html . Powiedziałbym jednak, że jego API jest no cóż ... skomplikowane - nazwy metod doprowadzają mnie do szału :) A propos „skomplikowanych” i prostych przykładów - ten wpis na blogu bardzo mi pomógł w rozpoczęciu pracy z matplotlib: shreevatsa.wordpress .com / 2010/03/07 / matplotlib-tutorial
— Timur

Przepraszam, muszę też dodać, że matplotlib jest nie tylko interaktywny - faktycznie można zapisać wykres / wykres do pliku. Na przykład. PNG, PDF lub SVG.
— Timur,

18

Możesz także skorzystać z pygooglechart , który wykorzystuje Google Chart API . To nie jest coś, czego zawsze chciałbyś używać, ale jeśli potrzebujesz niewielkiej liczby dobrych, prostych wykresów i są zawsze online, a zwłaszcza jeśli i tak wyświetlasz w przeglądarce, to dobry wybór.


7
Słowo ostrzeżenia, wykresy, które Google pozwala tworzyć, mają raczej ograniczony rozmiar (szerokość * wysokość <= 300 000 pikseli). Wykresy Google (nie API Pythona) dławią się nawet zestawami danych o niewielkich rozmiarach. W przeciwnym razie są świetne.
— Pat Notz

1
Wykresy graficzne Google są nadal dostępne, ale zostały wycofane. Aby uzyskać więcej informacji, wejdź na developers.google.com/chart/image/?hl=nl
— ndequeker

15

Nie wspomniałeś, jakiego formatu wyjściowego potrzebujesz, ale reportlab jest dobry w tworzeniu wykresów zarówno w formacie pdf, jak i bitmapy (np. Png).

Oto prosty przykład wykresu słupkowego w formacie png i 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'])

tekst alternatywny http://i40.tinypic.com/2j677tl.jpg

Uwaga: obraz został przekonwertowany do formatu jpg przez hosta obrazu.


2
Jeśli pojawi się wyjątek „RenderPMError: Can't setFont (Times-Roman) brakuje plików T1?” (tak jak dostałem) na d. zapisz w powyższym kodzie - Rozwiązaniem jest pobranie i rozpakowanie reportlab.org/ftp/fonts/pfbfer.zip w katalogu reportlabs / fornts
— Shekhar

+1 za wysiłek stworzenia praktycznego przykładu.
— vmassuchetto

6

2
Dlaczego to jest dobre? Używałeś tego?
— Nick

Tak, użyłem dot_line_plot () w narzędziach do raportowania / statystyk. To ładne i łatwe. Zobacz najlepsze odpowiedzi Rodrigo na temat Matplotlib i CairoPlot. Używam również Matplotlib. W rzeczywistości używam go teraz.
— elmarco

Dziwni ludzie nie złapali Twojej odpowiedzi, ale obecnie najczęściej głosowała odpowiedź.
— pihentagy

Myślę, że dałoby to więcej głosów pozytywnych, gdyby był minimalny przykład. Twoja odpowiedź stanie się bezużyteczna, gdy link będzie nieaktywny.
— Martin Thoma,

dzięki, blog ma już wiele informacji. a sam autor odpowiedział tutaj, podając więcej szczegółów później.
— elmarco

6

Użyłem pychart i pomyślałem, że to bardzo proste.

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

To wszystko jest natywnym Pythonem i nie ma wielu zależności. Jestem pewien, że matplotlib jest cudowny, ale będę pobierał i instalował przez kilka dni, a chcę tylko jeden wykres słupkowy!

Wygląda na to, że nie był aktualizowany od kilku lat, ale hej, działa!


4

Czy zajrzałeś do ChartDirector dla Pythona ?

Nie mogę o tym mówić, ale używałem ChartDirector dla PHP i jest całkiem niezły.


ChartDirector dobrze współpracuje z Pythonem. Używałem go regularnie do tworzenia wielowierszowych działek.
— pwdyson,


4

Jeśli chcesz używać gnuplot do kreślenia, powinieneś rozważyć Gnuplot.py . Zapewnia zorientowany obiektowo interfejs do gnuplot, a także pozwala na przekazywanie poleceń bezpośrednio do gnuplot. Niestety nie jest już aktywnie rozwijany.






0

Możesz również rozważyć wykresy Google .

Technicznie nie jest to Python API, ale można go używać z poziomu Pythona, jest dość szybki w kodowaniu, a wyniki zwykle wyglądają ładnie. Jeśli korzystasz ze swoich działek online, byłoby to jeszcze lepsze rozwiązanie.


0

PLplot to wieloplatformowy pakiet oprogramowania do tworzenia wykresów naukowych. Nie są zbyt ładne (przyciągają wzrok), ale wyglądają wystarczająco dobrze. Spójrz na kilka przykładów (zarówno kod źródłowy, jak i zdjęcia).

Biblioteka główna PLplot może być używana do tworzenia standardowych wykresów xy, wykresów pół-dzienników, wykresów dziennika, wykresów konturowych, wykresów powierzchni 3D, wykresów siatkowych, wykresów słupkowych i kołowych. Działa w systemach Windows (2000, XP i Vista), Linux, Mac OS X i innych Unikach.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.