Portál AbcLinuxu, 6. května 2025 16:09

Dotaz: Jak vytvorit graf datum a hodnota zaputo, vypnuto

22.6.2013 22:55 lolek
Jak vytvorit graf datum a hodnota zaputo, vypnuto
Přečteno: 407×
Odpovědět | Admin

Dobrý večer, pokouším se za pomoci nástrojů rrdtool nebo gnuplot vytvořit graf zobrazující zapnutý stav (1) zelenou barvou a vypnutý stav (0) červenou barvou. Graf by byl lineární, na ose x znázorněn čas, osa y by pouze  zobrazovala sloupce buď zelené, či červené barvy na sobě přitisknuté v jedné ose. Časový horizont 24hodin.

Nemáte někdo materiál který bych mohl obšlehnout, pár hodin se snažím googlit, ale v tomhle se opravdu nevyznám, jakoukoliv radu uvítám, děkuji.

Příklad logu:
2013-06-22 08:41:44 1
2013-06-22 08:41:44 0
2013-06-22 08:46:13 1
2013-06-22 08:58:59 0
2013-06-22 09:03:31 1
2013-06-22 21:44:12 0
2013-06-22 21:44:17 1
2013-06-22 21:48:08 0
2013-06-22 22:07:47 1
2013-06-22 22:26:06 0
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.6.2013 23:10 Kit
Rozbalit Rozbalit vše Re: Jak vytvorit graf datum a hodnota zaputo, vypnuto
Odpovědět | | Sbalit | Link | Blokovat | Admin
Možná R-project.

A co budou dělat chudáci daltonisté?
22.6.2013 23:15 lolek
Rozbalit Rozbalit vše Re: Jak vytvorit graf datum a hodnota zaputo, vypnuto
Je to pro osobní statistiku, tudíž žádný daltonista to pravděpodobně neuvidí.
23.6.2013 01:11 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Jak vytvorit graf datum a hodnota zaputo, vypnuto
Odpovědět | | Sbalit | Link | Blokovat | Admin
Přílohy:

Zkus vzít přiložený skript onoffbar a dát mu na vstup ten svůj log (jakýkoliv), zhruba takto:

./onoffbar < log.txt > time.png

Vyleze z toho .png, který je taktéž v příloze.

Chce to samozřejmě doladit pár parametrů, například velikost okrajů, velikost písem a podobně. To, co tam je teď, funguje poměrně dobře pro zvolený .png formát a pro ten malý příklad vstupu, který tady je. Chceš-li mít vektorové obrázky, u .pdf a .eps je potřeba pár hodnot pozměnit, aby to vycházelo rozumně.
#!/bin/bash

{
cat <<- Rscript
        log <- read.table(file = stdin())
Rscript
cat /dev/stdin
echo
cat <<- Rscript
        times <- strptime(paste(log[,1], log[,2]), format = "%Y-%m-%d %H:%M:%S")
        colors <- c("red", "green")

        # Choose output format:
        #postscript(file = "/dev/stdout", paper = "special", width = 10, height = 1, horizontal = FALSE)
        #pdf(file = "/dev/stdout", paper = "special", width = 10, height = 1, horizontal = FALSE)
        png(file = "/dev/stdout", width = 1920, height = 192)

        par(
                mgp = c(0, 0, 0),
                oma = c(0, 0, 0, 0),
                mar = c(8, 0, 0, 0) ### Reduce when switching to pdf/eps
        )
        plot(
                c(),
                xlab = NA, ylab = NA,
                xaxt = "n", yaxt = "n",
                xaxs = "i", yaxs = "i",
                ylim = c(0, 1),
                xlim = c(
                        as.numeric(times[1]),
                        as.numeric(times[length(times)])
                )
        )
        rect(
                times[1:(length(times) - 1)],
                rep(0, length(times) - 1),
                times[2:length(times)],
                rep(1, length(times) - 1),
                col = colors[log[,3] + 1],
                border = NA
        )

        axis(
                1,
                labels = times,
                at = as.numeric(times),
                cex.axis = 1, ### Reduce when switching to pdf/eps
                las = 2,
                tcl = 0
        )
        discard <- dev.off()
Rscript

} | R --slave
23.6.2013 01:13 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Jak vytvorit graf datum a hodnota zaputo, vypnuto

No, teď vidím, že s těmi nulovými okraji jsem to fakt přepískl, protože to hltá kus krajních popisků na ose x... Ale to už si můžeš nějak vylepšit, třeba odebráním xaxs = "i" nebo tak nějak.

23.6.2013 12:21 lolek
Rozbalit Rozbalit vše Re: Jak vytvorit graf datum a hodnota zaputo, vypnuto
Děkuji za kus práce, přesně takto si to představuji. Bohužel nevím proč mi skript vypisuje: "./onoffbar: line 54: R: command not found" obrázek se vytvoří, ale nelze otevřít.
23.6.2013 12:32 lolek
Rozbalit Rozbalit vše Re: Jak vytvorit graf datum a hodnota zaputo, vypnuto
Aha já si říkal kde nalézt R, už jej mám r-base, děkuji ještě jednou, zkusím to z tohoto příkladu pochopit :)
24.6.2013 02:32 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: Jak vytvorit graf datum a hodnota zaputo, vypnuto

Jo, to jsem zapomněl zdůraznit... Skript používá R, takže je třeba ho mít nainstalované. Nejsem si jistý, které balíčky pro R jsou potřeba; tohle mívá každá distribuce rozdělené jinak. Jediné, co by mohlo vyžadovat nějaké extra balíčky, je grafický výstup do nějakého neobvyklého formátu, což snad png, pdf nebo ps nejsou. Takže nějaký základní kousek R by měl asi stačit.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.