Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: System do wykresu temperatur
Forum PHP.pl > Forum > PHP
tikky
Mam urządznie pomiarowe krtóre zapisuje do bazy MySQL dane o temperaturze z kliku czujników.
W bazie mam 3 komórrki: Nazwa czujnika, temperatura i data pomiaru w formacie '2008-01-31 10:22:00;

Szukam skryptu do rysowania wykresów. Obecnie używam Open Flash Chart. Problem jest taki, ze nie moge narysowac prostego wykresu x,y dlatego iż dane odczytywane nie są w równych odstępach. I np. w ciągu doby z jednego czujnika mam np. 150 odczytów a z drugiego 200. I jak to złożyć w jeden wykres?

Poniższy przykład ilustruje wady obecnego rozwiązania:
http://maxjar.no-ip.org/chart.php

Musiałby być jakiś dedykowany system wykresów, który potrafił by pracować z osią czasu x.

Wiem, że takie rozwiązanie jest możliwe przy zastosowaniu RRDtool z tym, że to by się wiązało z przebudową całej bazy i systemu pomiarów. A ja mam już wiele dancyh zgromadzonych w MySQL.

Jeśli ktoś ma jakieś doświadcznie w tym temacie będę wdzięczny za pomoc w znalezieniu odpowiedniego rozwiązania.

Pozdrawiam

Piotr
Riklaunim
matplotlib w Pythonie jest do wykresów "naukowych" smile.gif generowałem w nim wykresy danych z chromatografu nawet tongue.gif tutaj co nieco o matplotlib.
tikky
No widzę, że jest w Pythonie, tyle że ja szukam czegoś w PHP. 
Riklaunim
Możesz napisać skrypt generujący PNG w Pythonie, a w PHPie stronę, co będzie je wyświetlać, żądać.
Możesz próbować np z tym: http://code.google.com/intl/pl/apis/chart/ -- ale czasami niektóre typy wykresów zachowują dość jakościową a nie ilościową skalę smile.gif
mike
Cytat(Riklaunim @ 19.12.2008, 11:38:22 ) *
(...) ale czasami niektóre typy wykresów zachowują dość jakościową a nie ilościową skalę smile.gif
W tym API mozna kontrolować granulację i dzięki temu można decydować czy nastawiamy sie na jakość danych czy wygląd.
tikky
Próbowałem kiedyś używać google API ale nie pamiętam żeby tam była opcja z godzinami. Wiem, że na czyms się zaciąłem ale nie pamiętam dokładnie co to był za problem.


A jakieś inne rozwiązania?

Ciekawie wygląda także pChart ale nie wiem czy tam jest możlwość pracy z osią czasu.
http://pchart.sourceforge.net/support.php
erix
http://oss.oetiker.ch/mrtg/
pawel.s
ja bym użył tego http://pear.veggerby.dk/

pozdrawiam
oscar17
Z tego co pamiętam jak działa OFC (przynajmniej w wersji 1.x) możesz zrobić coś takiego że zakładasz że oś X masz co minutę i sprawdzasz dla każdego pomiaru czy masz dla tej godziny pomiar, jeśli nie to ustawiasz wartość NULL - on pominie to na wykresie i będziesz miał wykres ze wspólną osia dla niezależnej liczby pomiarów jeśli dobrze zrozumiałem. Pogrzeb trochę jeszcze w OFC, bo na pewno ma on duże możliwości, kiedyś dużo w nim robiłem różnych wykresików...
tikky
Erix:
MRTG jest interesujące ale to działa pod Perlem a nie PHP

Pawel.s:
Sprawdzę ten system. Czy używałeś tego lub wiesz że on działa z osią czasową i/lub autoskalą ?

Oscar17:
Myślałem, żeby obejść problem generowania wykresów robiąz osobne zapyanie dla każdej minuty. Ale zastanawia mnie jaka będzie wydajność takiego skryptu, który będzie musiał zrobić 1440 zapytań aby wygenerować wykres z 24 godzin * ilość czujników. Dla 10 z nich to byłoby prawie 15 tysięcy zapytąń. Czy przy tylu zapytaniach będzie widoczne spowolnienie działania?
oscar17
Cytat(tikky @ 22.12.2008, 12:27:30 ) *
Oscar17:
Myślałem, żeby obejść problem generowania wykresów robiąz osobne zapyanie dla każdej minuty. Ale zastanawia mnie jaka będzie wydajność takiego skryptu, który będzie musiał zrobić 1440 zapytań aby wygenerować wykres z 24 godzin * ilość czujników. Dla 10 z nich to byłoby prawie 15 tysięcy zapytąń. Czy przy tylu zapytaniach będzie widoczne spowolnienie działania?

Lepiej zrób jedno zapytanie który pobierze Ci wartości z całego dnia, a następnie zrób pętle w php, która będzie iterowała co okres jednej minuty i sprawdzała czy dla tej godziny masz daną wartość - jeśli tak przepisujesz ją do jakiejś tablicy wynikowej - czy też dodajesz do wartości obiektu, jeśli nie to dodajesz w tamto miejsce wartość NULL. OFC gdy widzi null to pomija i w ogóle nie zaznacza na wykresie, ale oś X się będzie zgadzać dla wszystkich...
Riklaunim
Cytat(tikky @ 22.12.2008, 14:27:30 ) *
Erix:
MRTG jest interesujące ale to działa pod Perlem a nie PHP


Jeżeli masz bardzo ciekawą bibliotekę rozwiązującą twoje problemy napisaną w innym języku to nie powinieneś tego od razu odrzucać. Stosowanie gorszych rozwiązań w PHP, tylko dlatego że to PHP to obchodzenie problemów szerokim łukiem. Chcesz mieć bardzo dobre wykresy - użyj najlepszego rozwiązania niezależnie od języka.
erix
Poza tym, nic nie stoi na przeszkodzie, aby przeportować skrypty (między Perlem a PHP jest wiele podobieństw) lub tak je zmodyfikować, aby korzystały z wzajemnych danych - np. skryptem PHP wyciągasz dane, a przez MRTG je obrabiasz.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.