Portál AbcLinuxu, 30. dubna 2025 11:22

Gnuplot umí UTF-8

30.3.2007 02:00 | Přečteno: 5962× | Výběrový blog | poslední úprava: 30.3.2007 11:41

Nová verze gnuplotu si už rozumí s UTF-8. I když jen částečně (výstup do velmi žádáného PostScriptu to není), věc považuji za zápisku hodnou.

Gnuplot verze 4.2 kromě spousty novinek přináší podporu pro kódování UTF-8, histogramů a popisků v grafu. Tyto vlasnosti si dneska ukážeme.

Návod k UTF-8 je vlastně jen návodem, jak správně nastavit font. Korektní výstup jsem se pokoušel získat a získal pro výstupní moduly PNG, X11 a SVG. Testovací soubor je dodáván se zdrojáky, případně jej lze získat tady.

Jak je vidět, záležitost není zcela bezproblémová, jedná se o takové hackování, ale pořád lépe, než se držet osmibitových znakových sad.

Data pro můj UTF-8 histogram s popisky jsou tato (v kódu odkazovány jako 'prehled'):

#Rok Příjmy Výdaje Schodek
2003 538500 538500 0
2004 586500 586500 0
2005 4393600 4393600 0
2006 768600 768600 0
2007 881400 881880 480

a gnuplot script následující:

#!gnuplot
# Začneme s PNG
set terminal png interlace enhanced \
    font '/usr/share/fonts/dejavu/DejaVuSans.ttf' 12 size 640,480
set output 'prehled.png'

set boxwidth 0.9 absolute
set style fill solid 1.00 border -1
set style histogram clustered gap 1 title  offset character 0, 0, 0
set style data histograms

unset xtics
set xtics out scale 0,0 nomirror offset character 0, 0, 0
set yrange [0:*] nowriteback
set grid noxtics ytics

set xlabel 'Rok'
set ylabel 'Koruny české'
set title "Vývoj rozpočtu obce Úherčice"
plot 'prehled' using 2 title 'Příjmy', \
    '' using 3:xticlabels(1) title 'Výdaje', \
    '' using 0:($2>$3?$2:$3):4 with labels center offset 0,1 title 'Schodek'

# Vyrobíme SVG

set terminal svg enhanced \
    font 'sans-serif' fsize 12 \
    size 640,480
set output 'prehled.svg'

replot

Vysvětlovat se se syntaxí a sémantikou nemá smysl, přečtěte si návod uvnitř interpretu gnuplotu (pomocí help PŘÍKAZ) a prohlédněte si přiložený obrázek.

Jemné pošťouchnutí: Určení fontu je závislé na výstupním formátu (příkaz set terminal … font). Péengéčku musíte zadat celou cestu k souboru s fontem, SVG stačí jméno, protože font se hledá až při prohlížení. Kdo by chtěl vyzkoušet X11 výstup, musí zadat název fontu a před něj přidat předponu mbfont:.

Histogram se zapíná příkazem set style data histogram a set style histogram. Styl umí i generovat legendu z prvního řádku/sloupce tabulky (parametr title columnhead, zde ale nepoužito).

Popisky do grafu lze vložit parametrem with labels, přičemž hodnota se bere z 3. parametru using. Z nějakého důvodu má ale problémy při získávání hodnot přes funkce (např. ve svém příkladě jsem chtěl získat hodnotu schodku jako rozdíl výdajů a příjmů ($3-$2), ale tak nějak to vracelo nesmysly).

Pokuď vás zajímá, co všechno verze 4.2 přináší, nahlédněte do galerie.

       

Hodnocení: 100 %

        špatnédobré        

Obrázky

Gnuplot umí UTF-8, obrázek 1

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

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

30.3.2007 12:17 thingie
Rozbalit Rozbalit vše Re: Gnuplot umí UTF-8
Odpovědět | Sbalit | Link | Blokovat | Admin
Hm, ten ukázkový obrázek je maso. Chci vidět jak někdo bude koukat na rozpočet s hodnotama ve tvaru 4.5e+06…
30.3.2007 12:33 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Gnuplot umí UTF-8
Chci videt, kdo se bude pocitat s nulami (rad sem rad tam).
David Watzke avatar 30.3.2007 21:09 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Gnuplot umí UTF-8
Tohle v klidu vyjádříš ve zkratkách (mil, mld, a tak)...
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
2.4.2007 20:06 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Gnuplot umí UTF-8
Zatim jsem to tak udelal, ale znacne to komplikuje skript.

Zkousel jsem skupinovani po trech radech a uz jsem nasel 2 chyby v gnuplotu. Proc na co sahnu, v tom najdu chybu?!
12.4.2007 11:54 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Gnuplot umí UTF-8
Tak obe chyby jsou v zasade opravene. Po aplikovani techto patchu, nebo pouziti CVS HEAD verze funguje tento kod:
set decimalsign locale "cs_CZ.UTF-8"
set format y "%'.0f
Vysledkem je skupinovani radu podle ceskych zvyklosti (napr. 1 500 000).
12.4.2007 11:56 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Gnuplot umí UTF-8
Samozrejme posledni dvojuvozovka ma byt uzavrena.

Založit nové vláknoNahoru

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