2016-07-19 4 views
0

Я пытаюсь отобразить файл данных в файле, используя библиотеку Rcaller в java. Но, похоже, это не сработает. Следующий код, что я пытаюсь сделать:Как отобразить dataframe в окне с помощью Rcaller

RCaller caller = new RCaller(); 
    RCode code = new RCode(); 
    code.addRCode("a=table(data$rate, predArbreDecision)"); 


    File file = code.startPlot(); 
    code.addRCode("as.data.frame.matrix(a)"); 
    caller.runOnly(); 
    ImageIcon ii = code.getPlot(file); 
    code.showPlot(file); 

ответ

0

В RCaller методы startPlot() и endPlot() работа, как и их коллеги R, как PNG(), PDF(), BMP() для запуска файлового устройства и dev.off() для завершения участка.

После использования startPlot() вы должны сделать что-то, используя графические функции R.

Это очень простые примеры дают представление для генерации графики с использованием RCaller:

double[] numbers = new double[]{1, 4, 3, 5, 6, 10}; 

    code.addDoubleArray("x", numbers); 

    File file = code.startPlot(); 
    System.out.println("Plot will be saved to : " + file); 

    code.addRCode("plot(x, pch=19)"); 

    code.endPlot(); 

Этот пример создает двойной массив значений 1, 4, 3, 5, 6, 10 и передавать их на R, используя метод addDoubleArray. Метод startPlot возвращает объект File, который, возможно, создан в вашем каталоге temp. Обычное выражение R

plot(x, pch=19) 

рисует сюжет, но на этот раз не на экране, но в созданном файле методом startPlot().

После вызова метода endPlot() мы можем завершить процесс, вызвав

caller.runOnly(); 

поэтому все директивы преобразуются в R код и передается R. Теперь мы можем показать содержание в Java:

code.showPlot(file); 

Вот весь пример:

try { 
    RCaller caller = RCaller.create(); 

    RCode code = RCode.create(); 


    double[] numbers = new double[]{1, 4, 3, 5, 6, 10}; 

    code.addDoubleArray("x", numbers); 
    File file = code.startPlot(); 
    System.out.println("Plot will be saved to : " + file); 
    code.addRCode("plot(x, pch=19)"); 
    code.endPlot(); 


    caller.setRCode(code); 
    System.out.println(code.getCode().toString()); 

    caller.runOnly(); 
    code.showPlot(file); 
} catch (Exception e) { 
    Logger.getLogger(SimplePlot.class.getName()).log(Level.SEVERE, e.getMessage()); 
} 

Вы можете увидеть ссылки на е Xample дано здесь и далее чтение:

Basic plotting using RCaller

Journal research paper

Unpublished research paper for RCaller 3