Poglavje 10. Koncepti za uporabo v specializiranih vtičnikih

To poglavje vsebuje informacije o nekaterih temah, ki so uporabne samo za določene razrede vtičnikov.

Vtičniki, ki ustvarijo grafikon

Ustvarjanje grafikona iz vtičnika je preprosto. Vendar pa obstaja nekaj subtilnih težav, ki se jim morate izogniti, in tudi nekaj odličnih splošnih funkcij, ki se jih morate zavedati. Ta razdelek prikazuje osnovne koncepte in se zaključi s kanoničnim primerom, ki ga morate upoštevati pri ustvarjanju vtičnikov za grafikon.

Risanje grafikona v izhodno okno

Če želite narisati grafikon v izhodno okno, uporabite rk.graph.on() neposredno pred ustvarjanjem grafa in rk.graph.off() neposredno zatem . To je podobno kot npr. klic postscript() in dev.off() v navadni R seji.

Pomembno pa je, da morate vedno poklicati rk.graph.off() po klicu rk.graph.on(). V nasprotnem primeru bo izhodna datoteka ostala v pokvarjenem stanju. Če želite zagotoviti, da bo rk.graph.off() res klican, bi morali zaviti vse R ukaze med obema klicema v stavku try(). Še nikoli slišali za to? Brez skrbi, enostavno je. Vse kar morate storiti je, da sledite vzorcu, prikazanemu v primeru spodaj.

Dodajanje funkcije predogleda

Opomba

Ta razdelek obravnava dodajanje funkcije predogleda vtičnikom, ki ustvarjajo grafikone. Obstajajo ločeni razdelki o predogledih (HTML) izpisa, predogledih (uvoženih) podatkov in predogledi po meri. Vendar je priporočljivo, da najprej preberete ta razdelek, saj je pristop v vsakem primeru podoben.

Zelo uporabna funkcija za vse vtičnike, ki ustvarjajo risbo/graf, je zagotoviti samodejno posodabljanje predogleda. Če želite to narediti, boste potrebovali dve stvari: dodati potrditveno polje <preview> v GUI definicija in prilagajanje generirane kode za predogled.

Dodajanje potrditvenega polja <preview> je preprosto. Preprosto postavite naslednje nekam v GUI. Poskrbel bo za vso čarovnijo v zakulisju ustvarjanja naprave za predogled, posodabljanja predogleda vsakič, ko se spremenijo nastavitve itd. Primer:

Opomba

Začenši z različico 0.6.5 RKWard so elementi predogleda <preview> v pogovornih oknih vtičnikov (ne čarovnikov) označeni s posebnimi črkami: postavljeni bodo v stolpec z gumbi, ne glede na to, kje točno so definirani v uporabniškem vmesniku. Še vedno je dobra ideja, da jih definirate na smiselnem mestu v postavitvi zaradi združljivosti za nazaj.

<document>
                [...]
                <dialog [...]>
                        [...]
                        <preview id="preview"/>
                        [...]
                </dialog>
                [...]
        </document>
                

In to je to za GUI definicija.

Prilagajanje predloge JS je le malo več dela, tukaj se boste morali prepričati, da je ustvarjen samo sam grafikon in prikazan v napravi na zaslonu, namesto da bi bil usmerjen na izhod. tj. brez tiskanja glav, rk.graphics.on() ali podobnih klicev. Da bi vam pri tem pomagal, RKWard bo poklical funkcije preprocess(), calculate() in printout() z dodatnim parametrom, ki je nastavljen na true pri generiranju kode za predogled. (Pri generiranju končne kode je parameter izpuščen. V javascriptu bo to ovrednoteno kot false, če bo uporabljeno znotraj stavka if.) Glejte primer spodaj za tipičen vzorec, ki ga boste uporabili.

Če pa potrebujete več nadzora, lahko namesto tega dodate novo funkcijo, imenovano preview(), v svojo predlogo JS in tam ustvarite kodo, potrebno za predogled (verjetno vsaj delno, spet s klicem calculate() itd.).

Splošne možnosti grafikona

Opazili ste, da večina vtičnikov za risanje v RKWard ponuja širok nabor generičnih možnosti itd. za prilagajanje naslovov osi ali robov figur. Dodajanje teh možnosti v vaš vtičnik je enostavno. Zagotavlja jih vtičnik embeddable, imenovan rkward::plot_options. To vdelajte v uporabniški vmesnik vtičnika tako:

<document>
                [...]
                <logic [...]>
                        <connect client="plotoptions.xvar" governor="x.available"/>
                        <set id="plotoptions.allow_type" to="true"/>
                        <set id="plotoptions.allow_ylim" to="true"/>
                        <set id="plotoptions.allow_xlim" to="false"/>
                        <set id="plotoptions.allow_log" to="false"/>
                        <set id="plotoptions.allow_grid" to="true"/>
                </logic>
                <dialog [...]>
                        [...]
                        <embed id="plotoptions" component="rkward::plot_options" as_button="true" label="Plot Options"/>
                        [...]
                </dialog>
                [...]
        </document>
                

S tem boste v uporabniški vmesnik dodali gumb za prikaz okna z možnostmi grafikona.Logični del je samo primer. Omogoča vam določen nadzor nad vtičnik možnosti risanja. Preberite več na strani s pomočjo vtičnika plot_options (povezava na strani s pomočjo katerega koli vtičnika, ki ponuja splošne možnosti).

Nato se morate prepričati, da koda, ki ustreza vašim možnostim grafikona, doda ustvarjeno kodo za vaš grafikon. Če želite to narediti, pridobite lastnosticode.preprocess, code.printout incode.calculate iz vdelanega vtičnika možnosti izrisa invstavite jih v svojo kodo, kot je prikazano v primer spodaj.

Kanonični primer

Tukaj je primer datoteke .JS, ki bi jo morali uporabiti kot predlogo, kadar koli ustvarite vtičnik za risanje:

function preprocess () {
    // the "somepackage" is needed to create the plot
    echo ("require (somepackage)\n");
  }
  
  function printout (is_preview) {
    // If "is_preview" is set to false/undefined, it generates the full code, including headers.
    // If "is_preview" is set to true, only the essentials will be generated.

    if (!is_preview) {
      echo ('rk.header (' + i18n ("An example plot") + ')\n\n');
      echo ('rk.graph.on ()\n');
    }
    // only the following section will be generated for is_preview==true

    // remember: everything between rk.graph.on() and rk.graph.off() should be wrapped inside a try() statement:
    echo ('try ({\n');
    // insert any option-setting code that should be run before the actual plotting commands.
    // The code itself is provided by the embedded plot options plugin. printIndentedUnlessEmpty() takes care of pretty formatting.
    printIndentedUnlessEmpty ('\t', getString ("plotoptions.code.preprocess"), '', '\n');

    // create the actual plot. plotoptions.code.printout provides the part of the generic plot options
    // that have to be added to the plotting call, itself.
    echo ('plot (5, 5' + getString ("plotoptions.code.printout") + ')\n');

    // insert any option-setting code that should be run after the actual plot.
    printIndentedUnlessEmpty ('\t', getString ("plotoptions.code.calculate"), '\n');
    echo ('})'\n);  // the closure of the try() statement

    if (!is_preview) {
      echo ('rk.graph.off ()\n');
    }
  }