2011-10-20 25 views
5

Jestem bardzo nowy dla R, więc proszę wybacz mi, jeśli to bardzo podstawowe pytanie.Jak wykreślić wykres za pomocą R, Java i JRI?

Napisałem skrypt R, który wykonuje pewne obliczenia i na końcu fabuły Box Plot. Jeśli uruchomię ten skrypt z konsoli R, działa dobrze, a wykres jest drukowany.

Jeśli uruchomię skrypt z programu Java (przykładowy program rtest.java, który jest podany na stronie JRI), obliczenia są wykonywane dobrze. Ale jest pewien problem z wykreślaniem wykresu. Otworzy się okno klatek, pozostając zajęte i zawieszone. (Jeśli spróbuję kliknąć okno, pokazuje "Nie odpowiada".) Używam JRI.

ten sposób jestem kreślenia wykresu w skrypcie:

boxplot(mat); 

Powyższe polecenie działa dobrze na R-konsoli.

Jestem prawie pewien, że chodzi tu o jakieś ustawienie importu/pakietu lub podobne. Ale nie jest w stanie dowiedzieć się, co to dokładnie jest.

Czy ktoś może mi w tym pomóc?

Dzięki.

EDIT 1: Wyjście polecenia mojej pudełkowej kreślenia:

enter image description here

Wyjście this code na link podany przez John:

enter image description here

Odpowiedz

4

Oto jak to zrobiłem: Pastebin link. Zasadniczo musisz powiedzieć pakietowi R JavaGD, że masz JFrame dostępne tam, gdzie można wyświetlić wykresy R.

Przykład w odpowiedzi @ Johna Colby'ego po prostu przechowuje wykres jako plik, a następnie wyświetla go w Javie - również opcja, ale w pewnym pośredni sposób to zrobić.

(Niestety dla ciebie mój kod jest w Scali, ale ponieważ jest to bardzo podobne do Javy (przetłumaczyłem to z Javy), mam nadzieję, że będziesz w stanie przetłumaczyć to z powrotem .. Użyłem jakiegoś przykładu JRI jako bazy dla to i używa tylko klas java.)

+0

Dzięki za odpowiedź ROLO. Czy masz jakiś oryginalny kod Java? lub wiesz, gdzie mogę go znaleźć? – Bhushan

+0

[This] (http://www.wojtek.njh6.de/Ddocs/Djri/jri.html) powinien zacząć. Jeśli dobrze rozumiem, od bardzo szybkiego skanowania przez niego, jedyną rzeczą, którą musisz wykonać, są te biblioteki R (JavaGD); JavaGD() 'przed rozpoczęciem drukowania (tzn. Nie jest wymagane dalsze programowanie java). – ROLO

+0

Jeśli pytanie dotyczy języka Java, odpowiedź powinna również dotyczyć tego języka. W przypadku R 3 i Java 8 kod, który łączysz, nie działa. I nie mam pojęcia, czy jest to problem z samym kodem, czy z czymś innym. –

Powiązane problemy