맨 처음 Rserve를 설치한다.
받은 파일을
C:\Program Files\R\R-3.4.4\library
에 넣어주기 위해 다운받은 경로로 간다.
(C:\Users\hong\AppData\Local\Temp\RtmpgVjMXI\downloaded_packages 등)
위에 다운 받은 경로로 이동하여 압축파일을 사용하기 좋은 위치에 복사한다.
바탕화면이 좋아서 바탕화면에 옮겨놨다.
압축을 해제하고 나온 파일을
C:\Program Files\R\R-3.4.4\library
로 옮긴다.
C:\Program Files\R\R-3.4.4\bin\x64
C:\Program Files\R\R-3.4.4\bin\x64
로 가서 안에 있는 모든 dll파일을 복사한다.
복사한 dll파일을
복사한 dll파일을
C:\Program Files\R\R-3.4.4\library\Rserve\libs\x64
에 붙여넣기 한다.
이제 Rserve.exe를 실행하는데 문제가 없을 것이다.
이제 Rserve.exe를 실행하는데 문제가 없을 것이다.
관리자 권한으로 Rserve.exe를 실행시킨다.
실행이 된 것을 확인하고 아래 샘플 코드를 이용하여 그래프를 출력해본다.
실행이 된 것을 확인하고 아래 샘플 코드를 이용하여 그래프를 출력해본다.
샘플코드
====================JAVA====================
package practice;
import org.rosuda.REngine.REXP;
import org.rosuda.REngine.REXPMismatchException;
import org.rosuda.REngine.REngineException;
import org.rosuda.REngine.Rserve.RConnection;
import org.rosuda.REngine.Rserve.RserveException;
public class rJava_Con {
public RConnection r = null;
public REXP x = null;
public String retStr = "";
public rJava_Con() throws RserveException {
this.r = new RConnection();
}
public byte[] returnRImg() throws REngineException, REXPMismatchException {
String device = "jpeg";
x = r.parseAndEval("try(" + device + "('test.jpg',quality=90))");
System.out.println("1");
// ok, so the device should be fine - let's plot - replace this by any plotting
// code you desire ...
r.parseAndEval("x <- mtcars$mpg ");
System.out.println("2");
r.parseAndEval("h<-hist(x, breaks=10, col=\"red\", xlab=\"Miles Per Gallon\", main=\"Histogram with Normal Curve\")");
System.out.println("3");
r.parseAndEval("xfit<-seq(min(x),max(x),length=40)");
System.out.println("4");
r.parseAndEval("yfit<-dnorm(xfit,mean=mean(x),sd=sd(x))");
System.out.println("5");
r.parseAndEval("yfit <- yfit*diff(h$mids[1:2])*length(x)");
System.out.println("6");
r.parseAndEval("lines(xfit, yfit, col=\"blue\", lwd=2)");
System.out.println("7");
// graphics off
r.parseAndEval("graphics.off()");
System.out.println("8");
// There is no I/O API in REngine because it's actually more efficient to use R
// for this
// we limit the file size to 1MB which should be sufficient and we delete the
// file as well
x = r.parseAndEval("r=readBin('test.jpg','raw',1024*1024); unlink('test.jpg'); r");
System.out.println("9");
return x.asBytes();// img;
}
}
============================================
====================JSP====================
<%@page import="practice.rJava_Con"%>
<%@ page import="com.sun.org.apache.xml.internal.security.utils.Base64"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Test!</h1>
<%
rJava_Con con = new rJava_Con();
%>
<img src="data:image/jpg;base64, <%=Base64.encode(con.returnRImg())%>" />
</body>
</html>
===========================================
ref.
갈대적 속성의 ITer / Rserve를 이용한 JSP 페이지 그래프(히스토그램)출력
'데이터 분석 > 데이터 분석 기초 자료' 카테고리의 다른 글
텐서플로우(TensorFlow)를 사용하기 위한 플로우(Flow)에 대한 설명 (0) | 2018.04.15 |
---|---|
텐서 플로우(TensorFlow)를 사용하기 위한 텐서(Tensor)에 대한 설명 (0) | 2018.04.14 |
rJava를 이용한 Java R 연동하기 (비추천) (0) | 2018.04.13 |
Rsession을 이용한 R출력 (추천) (0) | 2018.04.11 |
R과 Oracle 연결 (0) | 2018.04.10 |