2012-01-03 3 views
3

Я успешно нарисовал один граф, используя Java, JavaGD и R. Я следовал за this учебником.Проблемы с построением графиков с использованием Java, R и JavaGD?

Теперь у меня есть R-скрипт, который читает CSV-файл, выполняет некоторые вычисления. В конце он отображает 8 разных графиков. Когда я запускаю этот скрипт с использованием Java/JavaGD, видны только 1-й и 8-й графики. С 2-го по 7-й находятся на «неактивных» окнах, которые пусты. Я использую тот же самый код, что и в вышеупомянутой ссылке/учебнике. Поэтому я думаю, что что-то переписывается.

Как я могу нарисовать их на соответствующих окнах? Кроме того, первое окно, если оно изменено, становится пустым. Как решить эту проблему?

Пожалуйста, не стесняйтесь просить разъяснений, если необходимо. Я не уверен, насколько хорошо я объяснил эту проблему.

Любая помощь/материал для чтения приветствуется.

Update 1:

В настоящее время я использую этот код:

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Rengine re; 
    String[] dummyArgs = new String[1]; 
    dummyArgs[0] = "--vanilla"; 
    re = new Rengine(dummyArgs, false, null); 
    re.eval("library(JavaGD)"); 

    // This is the critical line: Here, we tell R that the JavaGD() device that 
    // it is supposed to draw to is implemented in the class MyJavaGD. If it were 
    // in a package (say, my.package), this should be set to 
    // my/package/MyJavaGD1. 
    re.eval("Sys.putenv('JAVAGD_CLASS_NAME'='test/MyJavaGD1')"); 

    re.eval("JavaGD()"); 
//  re.eval("plot(c(1,5,3,8,5), type='l', col=2)"); 
//  re.eval("source(\"C:\\Documents and Settings\\username\\My Documents\\Test Data\\BoxPlot.r\");"); 
     re.eval("source(\"C:\\\\Documents and Settings\\\\username\\\\My Documents\\\\sampleRScript.R\")"); 
     re.end(); 
     System.out.println("Done!"); 
    } 

Часть сценария:

par(las=2,mfrow=c(2,1)) 
PlotData <- subset (m4, select=c(LotNo,def,cavity,Lift), subset=(cavity=="1")) 
boxplot(Lift ~ def, data=PlotData, main="Number 1") 
hist(PlotData$Lift,50, main="", xlab="Lift", ylab="Frequency") 
win.graph() 
par(las=2,mfrow=c(2,1)) 
PlotData <- subset (m4, select=c(LotNo,def,cavity,Lift), subset=(cavity=="2")) 
boxplot(Lift ~ def, data=PlotData, main="Number 2") 
hist(PlotData$Lift,50, main="", xlab="Lift", ylab="Frequency") 
win.graph() 
par(las=2,mfrow=c(2,1)) 
PlotData <- subset (m4, select=c(LotNo,def,cavity,Lift), subset=(cavity=="3")) 
boxplot(Lift ~ def, data=PlotData, main="Number 3") 
hist(PlotData$Lift,50, main="", xlab="Lift", ylab="Frequency") 
. 
. 
. 
+0

Мы видим некоторый код в ссылке для рисования один сюжета, но не показывает код, который вы использовали для построения 8 графиков. Попытайтесь сварить это до небольшого фрагмента кода R, который воспроизводит вашу проблему. Это облегчило бы нам помощь. –

+0

@PaulHiemstra: Я использую тот же код, что и в ссылке. Я обновил вопрос. Пожалуйста, смотрите. – Bhushan

ответ

2

Вам потребуется указать экземпляр R о ваш инициализированный JRI с использованием .jengine(), в противном случае он не может выдавать обратные вызовы, например для изменения размера окна. Что касается закрытых окон, вам необходимо предоставить код, который вы используете.

(Вы можете использовать статистики-rosuda-развейте обсудить там rJava/ИСР/JavaGD вопросы, связанные с.)

+0

Можете ли вы дать более подробную информацию о .jengine()? любой пример или ссылку? – Bhushan

+0

Это команда в rJava - см. '? .jengine'. Предложенное использование будет выглядеть как 're.eval (" {library (rJava); .jengine()} ")'. Можете ли вы разместить свой код 'sampleScript.R', чтобы мы могли рассмотреть проблему гашения? –

+0

Добавлен скрипт. – Bhushan

Смежные вопросы