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

sverrejoh
źródło
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 .

Rodrigo
źródło
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.

Barry Wark
źródło
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.

Tony Meyer
źródło
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.

serbaut
źródło
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

CairoPlot

elmarco
źródło
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!

tullaman
źródło
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.

Thomas Owens
źródło
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.

mhagger
źródło
3

Jestem fanem PyOFC2: http://btbytes.github.com/pyofc2/

To tylko pakiet, który ułatwia generowanie danych JSON potrzebnych do Open Flash Charts 2, które są bardzo piękne. Sprawdź przykłady w powyższym linku.

Gourneau
źródło
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.

Tyler
źródło
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.

Cristian Ciupitu
źródło