Kreslenie dátových grafov zo senzorov pripojených k internetu vecí (IoT) pomocou SVG

Kreslenie dátových grafov zo senzorov pripojených k internetu vecí (IoT) pomocou SVG

Kreslenie dátových grafov zo senzorov pripojených k internetu vecí (IoT) pomocou SVG

V tomto článku zo série o reprezentujúce dátové grafy v IoT Vysvetľujem, ako vykresliť grafy pomocou jazyk SVG. Ako pri iných príležitostiach, aj tento článok slúži ako krátky úvod do jazyka.

Obsah

    Dátové grafy zo senzorov pripojených ku kontajneru internetu vecí (IoT) v HTMLGrafy údajov zo senzorov pripojených k internetu vecí (IoT) definícia vzhľadu v CSSDátové grafy zo senzorov pripojených k internetu vecí (IoT) kreslenie pomocou SVGDátové grafy zo senzorov pripojených k internetu vecí (IoT) Generovanie a úprava pomocou JavaScriptu

    formát SVG

    SVG zodpovedá skratke pre Scalable Vector Graphics (škálovateľná vektorová grafika, v angličtine). Je to a značkovací jazyk ktorý je založený na XML a to umožňuje predovšetkým opísať výkres geometriou, ktorá ho definuje; na rozdiel od maticovej metódy, používanej napríklad pre fotografiu, ktorá by na jej zakódovanie využívala mriežku farebných pixelov.

    vnútri kresby SVG Môže byť zahrnutý aj obrázok (matica pixelov), buď odkazujúci na externý dokument, alebo vložený do samotného výkresu. SVG.

    Jazyková verzia, ktorá je aktuálna v čase písania tohto článku, je SVG 1.1 hoci definícia verzie sa už pripravuje SVG 2. V rámci možností sa pokúsim urobiť to, čo je vysvetlené v úvode, aj keď sa to týka SVG 1.1 slúžiť aj pre SVG 2.

    Ak kresba SVG Je zahrnutý v samostatnom dokumente a nie v kóde HTML (môj návrh v tomto riešení reprezentovať dáta IoT ich vkladá do kódu HTML) musí byť uvedený odkazom XML a definícia typu dokumentu (DTD).

    V prvom riadku predchádzajúceho kódu je oznámená verzia XML použité (1.0) kódovanie znakov (UTF-8) a označuje, či potrebujete externé definície (standalone="no") alebo ide o samostatný dokument (standalone="yes"). Druhý riadok vyjadruje definícia typu dokumentu (DTD), ktorý nebude potrebný v ďalšej verzii SVG.

    Kód, ktorým je výkres definovaný, je uzavretý medzi štítkami <sgv> y </sgv> ktoré tiež naznačujú, ako už bolo spomenuté, keď sa hovorí o HTML kód, ktorý funguje ako kontajner pre dátové grafy v IoT, miery, zastúpená časť z celkového počtu, podiel a tiež typ a verzia.

    Vyššie uvedený príklad definuje kresbu so šírkou 500 pixlov a výškou 250 pixlov (výrez 500 x 250), ktorý bude orezaný pomocou obdĺžnika 460 x 80 (výrez 460 x 80) počnúc súradnicami 20,10 s využitím celého priestoru dostupného v kontajneri (prvok na webovej stránke, v náš prípad) bez rešpektovania pôvodného pomeru použitia preserveAspectRatio="none". Okrem toho teraz môžete vidieť prvý obsah dokumentu, komentáre, ktoré sú medzi nimi zahrnuté <!-- y --> ako v iných formátoch založených na XML.

    Súradnicový systém zvolený SVG Je orientovaný horizontálne (os X) a vertikálne (os Y) a kladný smer je smer západného písma, to znamená, že hodnoty osi X rastú doprava a kladné hodnoty osi Y rastú. smerom nadol.

    Definujte graf pomocou SVG

    Na definovanie grafiky informácií uložených našimi senzormi pripojenými k IoT budeme musieť špecifikovať typ objektu, ktorý sa kreslí, jeho geometriu (súradnice, rozmery...) a jeho vzhľad (hrúbku, farbu...) príklad tohto článku čiarový graf, ktorý možno vytvoriť spojením segmentov čiary s objektom line, najužitočnejšie na vykresľovanie nezávislých prvkov alebo s viacsegmentovou čiarou, objekt path, praktickejšie pre série spojených liniek.

    S prvkom path Cieľom je vytvoriť kresbu ako na obrázku nižšie, ktorá je tvorená uzavretým cestom vyplneným svetlejšou farbou zakončenou hore otvoreným cestom, bez výplne a nakresleným hrubou čiarou.

    Na opis riadku sa používa výraz typu:

    V ktorom X1,Y1 sú súradnice prvého bodu na priamke a X2,Y2 sú súradnice druhého bodu. Bol použitý atribút stroke-width na definovanie hrúbky. Existuje niekoľko spôsobov, ako definovať vzhľad objektov SVG, s jeho jednotlivými vlastnosťami, ako predchádzajúci, alebo s vlastnosťou style ktorá ich všetky spája a ktorá metóda bude použitá v návrhu článku.

    Vyššie uvedený kód sa pripája k nehnuteľnosti style hodnoty stroke (farba ťahu), stroke-width (hrúbka čiary) a stroke-opacity (nepriehľadnosť objektu)

    Popis objektu path má tvar

    Vyššie uvedený kód používa operácie SVG M, L y Z vnútri nehnuteľnosti d, čo v tomto poradí znamená „presunúť“ (presunúť do), „lineto“ (priamo do) a „blízka cesta“ (blízka cesta). Môžu byť vyjadrené veľkými alebo malými písmenami na označenie absolútnej alebo relatívnej hodnoty, ak je to vhodné (v prípade Znapríklad , je irelevantné). Existuje mnoho ďalších operácií, pomocou ktorých môžeme napríklad kresliť kruhové krivky, eliptické krivky, Bézierove krivky... ktoré v tomto príklade nebudeme potrebovať.

    Hoci tento návrh kreslí čiarové grafy, ktoré môžu ohraničiť oblasť, môže byť užitočné nakresliť ďalšie jednoduché prvky na označenie bodov alebo zvýraznenie oblastí. Z tých dostupných v SVG Zaujímavé môžu byť mnohouholníky (s ktorými môžete kresliť aj výplň), obdĺžniky (vhodnejšie pre konkrétny prípad), elipsy a kruhy (ako konkrétny prípad elipsy). Syntax týchto prvkov je možné vidieť v nasledujúcom príklade kódu.

    Vzhľad predchádzajúceho kódu by bol ako nasledujúci obrázok (s nejakým trikom, aby ste mohli znova použiť body z vyššie uvedeného príkladu)

    Body mnohouholníka (polygon) sú uvedené vo vlastnostiach points ako dvojice súradníc x,y oddelené medzerami medzi nimi. Ak chcete definovať elipsy (ellipse) sa používajú vlastnosti cx (x súradnica stredu), cy (y súradnica stredu), rx (šírka) a ry (vysoká). Namiesto dvoch hodnôt polomeru (horizontálny a vertikálny polomer, rx y ry) kruh (circle) je definovaný polomerom s vlastnosťou r a súradnice stredu s cx y cy. Ak chcete definovať obdĺžnik (rectangle) sú uvedené súradnice ľavého horného rohu (x e y) Šírka (width) a vysoký (height)

    Nakoniec sa na zahrnutie textu použije objekt text nasledovne:

    Poloha textu je označená súradnicami x a y, font zodpovedá vlastnosti font-family, veľkosť s font-size a farba s vlastnosťou fill.

    HTML umožňuje integrovať výkresy SVG ako ďalší prvok stránky. Rovnako ako iné objekty, môžete použiť vlastnosť ID priradiť im jedinečný identifikátor, pomocou ktorého sa na ne potom dá odkazovať JavaScript manipulovať s nimi. Z pohľadu HTML, objekt SVG by mal nasledovnú podobu:

    S tým, čo sme doteraz videli, by bolo možné nakresliť typ základného grafu, ktorý sa hľadá v tomto návrhu, ale aby sa poskytla flexibilita vzhľadu kontajnera (webovej stránky), podiel grafu bude ovplyvnený (napríklad preserveAspectRatio="none") úpravou jeho veľkosti tak, aby sa prispôsobila rozloženiu prvkov v okne prehliadača HTML.

    Vo všeobecnosti existujú dve alternatívy správania pri úprave veľkosti okna prehliadača, ktoré zobrazuje webovú stránku obsahujúcu graf: (1) zachovať veľkosť grafu SVG ponechanie prázdneho miesta, ak je prebytok, alebo pridanie posuvných pruhov, ak chýbajú, alebo (2) úprava veľkosti grafu SVG rytmickým spôsobom meniť veľkosť okna prehliadača, ktoré zobrazuje web. Ak vyberiete prvý vzorec, môžete predpovedať veľkosti a kresliť s absolútnymi meraniami, aj keď korigované na základe zvolenej veľkosti a hodnôt grafu. Ak si vyberiete druhý spôsob, ktorý navrhujem, veličiny sú vždy percentá reprezentovaných hodnôt. Výhodou druhého spôsobu je jeho prispôsobivosť webu a nevýhodou je kreslenie prvkov, ktoré graf sprevádzajú, ako sú body alebo texty.

    Na korekciu deformácie, ktorá by mohla nastať v hrúbke čiar, sa používa efekt. vector-effect="non-scaling-stroke" na trasách, ktoré sú potrebné (tie, ktoré majú hodnotu stroke iný ako none). Pre predmety text Neexistuje žiadny porovnateľný efekt, takže je potrebné ich deformovať (spolu s tými, ktoré sú s nimi spojené) v opačnom smere, než aký vytvára zmena veľkosti nádoby.

    Premeny v SVG Môžu byť aplikované na skupiny objektov, takže niekoľko textov a iných objektov v grafike možno integrovať do jednej skupiny a pohodlnejšie vykonať transformáciu pre všetky z nich.

    Prvky, ktoré sú súčasťou skupiny, sú zahrnuté medzi značkami <g> y </g>, na priradenie transformácie sa používa vlastnosť transform a sériu operácií, ktoré sú v našom prípade relevantné scale, na ktorom je uvedený horizontálny a vertikálny faktor zväčšenia. Ak je hodnota scale je väčšia ako jedna, rozširuje zodpovedajúcu os a ak je menšia ako jedna, dochádza k zmenšeniu veľkosti objektov pozdĺž tejto osi.

    V predchádzajúcom príklade sa prvý a druhý text upravia znížením ich horizontálneho merania na polovicu a zdvojnásobením vertikálneho merania o hodnoty 0.5 a 2.0 použité v scale(0.5,2.0)

    Ďalší článok zo série na reprezentácia dátových grafov zo senzorov pripojených k IoT vysvetľuje, ako generovať alebo upravovať grafy v reálnom čase pomocou JavaScript čo vám umožní vidieť animáciu grafu pri reprezentácii posledných hodnôt načítaných zo servera.

    Nasleduje príklad toho, ako by vyzerali grafy vytvorené pomocou tohto návrhu.

    Pridať komentár

    Možno ste zmeškali