regine napsal(a)Mám odečet teplot (z teplotního dataloggeru) v jednohodinových intervalech (24 hodnot za den) po dobu 1 měsíce.
Dva sloupce A = čas, B = teplota. Počet řádků 720 (24x30).
Potřebuji graf, srovnávající teploty v odměřenou hodinu za 30 dní.
Osa X hodiny (24 hodin) a Y teplota.
PLS, jak na to? Před-připravit nějaké seskupení? ....
Podle zadání máte pouze dva sloupce, čas a teplota. Nyní je potřeba vědět, zda je tam také datum. To je často spojeno s časem. Report dataloggeru může být proveden různě. Například datum na samostatném řádku a vlastní data už jen čas a hodnota.
Viděl jsem něco podobného u průmyslového lisu kde byla pouze hlavička ze které se dal odečíst údaj o dni. Ostatní byly už jen časy po cyklech (necelé minutě) a nejméně 3 zaznamenávané parametry z D/A převodníků. V případě nestabilních stavů tam vyskočilo více dat z jiných čidel. Stroj běžel v nepřetržitém provozu a restart raportu byl až třeba po několika dnech (ačkoliv to bylo proti technologickému postupu). Byl to souhrn z čidel za celou linku mimo vstupního šneku. Prostě hrůza. Na začátku jsme ani nevěděli co hledat.
Takže pokud je Váš popis úplný nemáte v reportu údaje o datumu, ale může jít také o více souběžných komparací různých čidel - takový graf už je opravdu složitý. Nejprve asi bude nutné uvést co mají grafy znázornit (například extrémní hodnoty, hodnoty typické pro určitý čas apod.).
To se dá dovodit pouze tak, že se najde čas buď 00:00, nebo 24:00 (při formátu HH:MM) a tak se najde začátek dne. Vlastní úprava pro vytvoření grafu předpokládá rozprostřít hodiny jednotlivých dnů do osy "X", jednotlivé dny do osy "Y". Je to typické 2D uspořádání původního datového údaje z 1D.
Problém je v tom, že objem dat je stejný jako při nestrukturovaném výpisu. Tabulka bude sice dobře orientována, ale dat je to mnoho i když se na to díváme jako na jediný logger.
Řešením je kontingenční tabulka která by měla být vybavena pouze popisem sloupců. Sloupce by měly obsahovat údaj YYMMDD + HH (minuta není potřebná a je možné uvést co nejkratší formu datumu - možná jenom den, protože měsíc a rok může být uveden v záhlaví grafu DD+HH).
Z tabulky pokusně vyseparovat to co nás zajímá. To jste neuvedl, ale vždy se má něco demonstrovat, například extrémy. Z toho se dá dovodit například delší sledovaný úsek jako průměr. Například po 4 hodinách, nebo jen třeba začátek směn (6.00, 14.00, 22.00).
Následně podle analýzy vytvořit jednotlivé grafy. Obecně by to mohlo být 30 grafů s 24 – mi položkami (nadepsané hodiny a zobrazené hodnoty), nebo 24 grafů (stejná hodina) po 30-ti položkách (dnech).
POSTUP ÚPRAV na formát 2D.
Naimportujeme report do Calcu (sloupec A hodina, sloupec B teplota). Do pomocného sloupce C, vložíme nejprve pořadové číslo. To uděláme nejlépe jako vzorec „=ROW()". Pokud report obsahuje nějaké záhlaví – které je na prvním řádku uděláme číslování od druhého takto „=ROW()-1". Následně hned vzorce zkopírujeme a vložíme zpět jen jako čísla. (Nyní už můžeme například řadit podle potřeby a k původnímu uspořádání se vrátíme právě podle sloupce „C".)
Nyní sice můžeme seřadit soubor podle jednotlivých hodin, ale nás zajímá nejprve datum. Potřebujeme oddělit jednotlivé dny nejlépe jedním, nebo dvěma prázdnými řádky.
Postup : Do sloupce D a E (popřípadě F – když bychom chtěli 2 řádky mezi dny). Zadáme vzorec :
ve sloupci D pro příslušný řádek – například 2.
Dále do sloupce E vzorec který testuje následující řádek a v případě, že najde hodnotu 00:00 (respektive 24:00 – tedy první hodinu dne) tak přidá číslo řádku. Před každým novým dnem se tak vytvoří vedle sebe dvě čísla, která nakonec spojíme do jednoho sloupce (hodnoty z „E" přidáme za hodnoty v D a seřadíme sloupec podle D. Tím vzniknou mezery mezi dny.
Nyní máme rozdělení pouze naznačené tak, že tam kde má vzniknout prázdný řádek je záznam ve sloupci E. To je choulostivé a musíme nejprve Sloupce D a E zkopírovat a vložit zpět jen jako čísla (zde se může snadno stát chyba – proto máme ještě ve sloupci C původní pořadí ke kterému se můžeme vždy vrátit).
Následně seřadíme k sobě pouze čísla ze sloupce E (pozor systém nabízí seřezaní celého souboru – to se stát nesmí). Takto seřazení hodnoty z E vystřihneme a vložíme na konec sloupce D.
Vybereme celý datový úsek (předpokládáme od 2. řádku) a seřadíme podle sloupce D vzestupně. Teprve nyní nám vznikly skutečně řádky mezi jednotlivými dny. Měli bychom zkontrolovat, zda jsou původní hodnoty sloupce C ve vzestupném řazení. Pokud je zde nějaký problém, začneme od začátku. Pokud je vše v pořádku můžeme pomocné sloupce C...E smazat (ale raději si sloupce C ponechte pro všechny případy možných oprav.
Zbývá transponovat jednotlivé dny do řádků. To uděláme také pomocí vzorců :
Nejprve přidáme do sloupce D relativní číslování. Začneme od druhého řádku. Cílem je zjistit kolik dní má který měsíc. Podle toho doplníme manuálně potřebný počet řádků tak aby na každý měsíc vycházelo 31 + 1 řádek - například za únorem (28 dní) bude 5 prázdných řádků, jindy jen dva, nebo žádný – pokud má měsíc 31 dnů.
Do uvolněného sloupce E zadáme vzorec který vykopírujeme do 31 řádků :
Tento vzorec je ve sloupci a kvůli transpozici musíme všech 31 vzorců vybrat a pomocí F4 (Pro LibreOffice) udělat z relativních adres adresy absolutní :
=IF($A$2 = "";"";$B$2)
…..
=IF($A$32 = "";"";$B$32)
Teprve nyní sloupec vystřihneme a vložíme s volbou transponovat (dialog vložit jinak). Transponovaná řádek musí být nejlépe na řádku prvního údaje. Zkontrolujeme zda jsou hodnoty ze sloupce v řádku. Když vzorce fungují správně odstraníme ze vzorce dolary – tím vytvoříme relativní adresy které můžeme kopírovat do dalších řádků. Odstranění je možné tak, že celý úsek vzorců máme vybraný a pomocí F4 se proklikáme až k čistě relativní podobě. Jinou možností je dialog Najít a nahradit – na vybraném úseku řádku zadáme najít dolar ($) a nahradit (nic).
Teprve nyní můžeme celý řádek (31 hodnot) zkopírovat a postupně vložit do stejného sloupce a prvního řádku dne (hodina 00:00, nebo 24:00). Když máme všechny dny vykopírované do řádků, musíme celý úsek od řádku 2 do řádku XY zkopírovat a vložit jen jako čísla.
Posledním úkonem je seřazení podle :
1. - sloupec E
2. - sloupec C
Máme hotovou tabulku 2D a proto můžeme smazat sloupce A:C. Doplníme hlavičkové údaje (kterými bude asi hodina). Přidáme podle potřeby sloupec A kam zadáme den. To může být problém. Často víme jen to, kterým dnem report začínal, nebo končil.
Vypadá to složitě, ale není to tak hrozné když se zamyslíte nad každým krokem. Je možné udělat instruktážní Calc který by demonstroval StepByStep postup pomocí maker a komentů. Také se k tomu chystám, ale má to hodně variant tak to odkládám.
Spíš bych pomohl tak, že vytvořím makro, které proces provede bez ukecaných komentářů a celkem rychle. Musel bych ale vidět skutečný raport jinak to nedám dohromady. Pokud budete mít zájem postněte sem vzor, nebo mi to pošlete privátně na email uvedený hned pod těmito řádky.
PS vlastní graf neřeším ale předpokládám použití grafu z volby VLOŽIT > GRAF nejspíš "čárový", nebo plošný.