Ł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.