2011-10-20 4 views
5

Sono molto nuovo con R, quindi scusatemi se questa è una domanda molto semplice.Come stampare un grafico usando R, Java e JRI?

Ho scritto uno script R, che esegue alcuni calcoli e alla fine stampa Plot box. Se eseguo questo script dalla console R, viene eseguito correttamente e il grafico viene tracciato.

Se eseguo lo script dal programma Java (il programma rtest.java di esempio fornito nel sito JRI), i calcoli sono eseguiti correttamente. Ma c'è qualche problema con il grafico. La finestra cornice si apre e rimane occupata e si blocca. (Se provo a cliccare sulla finestra, mostra "Non risponde"). Sto usando JRI.

Ecco come sto tramando il grafico nello script:

boxplot(mat); 

Sopra comando funziona bene sulla R-console.

Sono quasi sicuro che si tratta di qualche importazione/pacchetto o di qualche impostazione simile. Ma non è in grado di scoprire cosa sia esattamente.

Qualcuno può aiutarmi con questo?

Grazie.

EDIT 1: uscita del mio comando box-complotto:

enter image description here

uscita del this code sul link fornito da John:

enter image description here

risposta

4

Ecco come l'ho fatto: Pastebin link. Fondamentalmente è necessario dire al pacchetto R JavaGD di avere una JFrame disponibile dove i grafici R possono essere visualizzati.

L'esempio nella risposta di @John Colby memorizza appena la trama come un file e quindi la visualizza in Java - anche un'opzione, ma un modo un po 'indiretto per farlo.

(Sfortunatamente per voi il mio codice è in Scala, ma poiché è simile a Java (l'ho tradotto da Java), spero che sarete in grado di tradurlo. Ho usato un esempio JRI come base per esso, e utilizza solo classi java.)

+0

Grazie per la risposta ROLO. Per caso hai il codice Java originale? o so dove posso trovarlo? – Bhushan

+0

[This] (http://www.wojtek.njh6.de/Ddocs/Djri/jri.html) dovrebbe iniziare. Se capisco correttamente da molto rapidamente la scansione attraverso di essa l'unica cosa che devi eseguire sono questi 'command library '(JavaGD); JavaGD() 'prima di iniziare a tracciare (cioè non è necessaria alcuna ulteriore programmazione java). – ROLO

+0

Se la domanda riguarda Java, la risposta dovrebbe essere anche su quella lingua. Con R 3 e Java 8 il codice che colleghi non funziona. E non ho idea se si tratta di un problema con il codice stesso o qualcos'altro. –