2009-08-14 16 views
26

Moje pytanie jest bardzo podobne w duchu na to pytanie: What is the best plotting library for Python?Dobra biblioteka kreślenia dla C?

Co jest moim najlepszym do wykreślania danych w C? Czy lepiej zrezygnować z biblioteki i po prostu generować dane, które mogę wprowadzić bezpośrednio do gnuplot?

Moim impulsem na to pytanie jest możliwość wizualizacji transformacji DSP podczas badania doskonałych zasobów znalezionych w earlier question of mine. Tak więc skupienie to tak naprawdę tylko wykresy 2D, histogramy itp .; 3D nie jest teraz tak ważne.

Odpowiedz

16

Myślę, że jesteś na dobrej drodze z gnuplot. To, co chcesz, jest bardzo wydajne i elastyczne.

Możesz jednak rozważyć zapisanie do gnuplot bezpośrednio ze swojej aplikacji zamiast tworzyć dane i karmić je. Dostępny jest ANSI C API to gnuplot.

+0

Opracowałem gnupplus, wariant C++ biblioteki, którą połączyłeś. Możesz znaleźć link do niego na tej samej stronie, którą zamieściłeś. – Dacav

+0

Możesz albo fork/exec gnuplot i podawać go przez potok, albo po prostu wyprowadzać dane na standardowe wyjście i przepuszczać je do gnuplot. Zazwyczaj podoba mi się drugie rozwiązanie, ponieważ pozwala ono wcześniej użyć 'awk' (lub cokolwiek innego) do zmodyfikowania skryptu gnuplot. –

1

W systemie Mac OS X można także karmić swoje dane bezpośrednio do działki którym znajduje włączony Perl opartego oraz interfejs wiersza poleceń dla nieinterakcyjnym przetwarzania danych:

http://plot.micw.eu

w kategoriach Mac OS X C-owski szkielet kreślący zobacz rdzeń-działkę.

0

czy spojrzałeś na AntiGrain? jest wieloplatformowy:

2

libgd. Ale jeśli nie masz dużo danych do wykreślenia, gnuplot to dobry sposób na przejście, jak sugerowali inni.

1

Znalazłem PLplot, który wydaje się interesujący. Próbuję tego teraz i opublikuję tutaj krótką recenzję, ponieważ będę wiedział coś więcej na ten temat.

Aktualizacja: Jako pierwszy rzut oka wydaje się być źle zaprojektowane, ponieważ zwiększa interaktywność aplikacji (IMHO biblioteka powinna nigdy bezpośrednio interfejs z użytkownikiem, chyba że jest to cel Biblioteki).

7

MathGL jest bezpłatna (GPL, LGPL dla rdzeni) biblioteka kreślarska. Jest szybki, ma wiele typów graficznych, potrafi drukować ogromne tablice danych, może generować bitmapowe i wektorowe (EPS/SVG/U3D), może używać OpenGL, może działać w konsoli (nie potrzebuje X), ma wiele interfejsów (Fortran/Python/... w połączeniu z innymi językami), mają widżety FLTK/Qt, mogą tworzyć własne okno z wykreślaniem i tak dalej.

+0

Wydaje się dość ciężki, ale dla kodu typu "produkcja" wydaje się świetny. Jednak w przypadku prototypowania gnuplot jest nie do pobicia. –

+0

Po prostu doświadczyłem zależności, próbuję wykonać statyczne łącze z MathGL w MINGW. Tylko moje dotychczasowe doświadczenia. –