R言語は、オープンソースでフリーソフトウェアの統計解析向けプログラミング言語、及びその開発実行環境です。R言語は「ベクトル処理」と呼ばれる実行機構により、柔軟な処理を簡便な記法で実現します。
世界中のRユーザが開発した膨大なRプログラム(パッケージ)が「CRAN」として配布用の形式に保存されています。そのCRANパッケージ数の飛躍的な増大に見られるとおり、統計学を超えて学問分野や業界を問わず、金融工学・時系列分析・機械学習・データマイニング・バイオインフォマティクスなど、柔軟なデータ解析や視覚化そして知識共有の需要に応えうるR言語の普及は世界的に広がっています。
データのグラフ(チャート)・図解化機能はありますが、グラフ画像出力はシンプルなものしかありません。
●JavaとR言語のインターフェイス方法
Javaのようなハイレベルなアプリケーションは直接Rオブジェクトにアクセスできません。JRI (Java R Interface)というソフトを使用することでJavaからRオブジェクトへのアクセスが可能となります。これを使用してJRIクラスをjavaクラスにインポートします。
JRIインターフェイスを使用してラインチャートの描画方法(一部):
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.rosuda.JRI.Rengine;
public class LineChart{
public static void main(String[] args) throws IOException
{
//Set some labels for the plot
//Start R
Rengine r = new Rengine(args, false, null);
//Do some calcs and plot the chart but save as a png in the working folder
r.eval(“data(cars)”);
r.eval(“plot(cars, main = \”lowess(cars)\”)”);
r.eval(“lines(lowess(cars), col = 2)”);
r.eval(“lines(lowess(cars, f = 0.2), col = 3)”);
r.eval(“legend(5, 120, c(paste(\”f = \”, c(\”2/3\”, \”.2\”))), lty = 1, col = 2:3)”);
r.eval(“png(file=\”LineChart.png\”,width=800,height=600)”);
r.eval(“dev.off()”);
●EspressChartとR言語との融合
EspressChartは高度で、豊富なチャートを作成するためのAPIを提供します。一方R言語は統計分析用の機能構築を提供します。EspressChartはデータ分析にR言語を使用し、それを高度なチャートへ展開することが可能です。
パイ・チャートのサンプル・プログラム例:
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.rosuda.JRI.REXP;
import org.rosuda.JRI.Rengine;
(中略)
QbChart.setEspressManagerUsed(false);
QbChart chart=new QbChart((Applet)null,QbChart.VIEW2D,IChartTypeConstants.PIE,data,false,colinfo,null);
(以下省略)
図2 EspressChartでのパイチャート出力
結論:
ユーザはR言語を使用することで統計分析、データマイニングに必要な機能をコーディング数を削減して可能とします。さらにEspressChartを活用することで、高品質・高機能なチャート(グラフ)を簡単にWebアプリケーションに展開することが可能となります。
関連するトピックス:
- チャート・グラフをWeb上に展開するプログラム【Javaチャート・グラフ作成ツールEspressChart】
- レポート・帳票をweb上に展開するプログラム【Java対応レポート帳票ツール:EspressReport】
- flash(swf)形式のグラフをwebに展開【Javaチャート・グラフ作成ツールEspressChart】
- EspressReportのコンポーネントとアーキテクチャ【Java対応レポート・帳票ツールEspressReport】
- Javaオブジェクト/アレー データとEJB【Javaチャート・グラフ作成ツールEspressChart】
- Scheduler【Java対応レポート・帳票ツールEspressReport】
- データマイニングWebアプリケーションの実現:R言語 PL/R EspressChartの融合
- Log4JとEspressReportとの有効利用方法について【Java対応レポート・帳票ツールEspressReport】
- 画像(キャンバス)サイズを変えずにグラフのみサイズを変える方法[EspressChart]
- チャートAPI、レポートAPIを使用してJavaから動的にグラフや帳票をカスタマイズ
データマイニングWebアプリケーションの実現:R言語, PL/R, EspressChartの融合について
https://www.climb.co.jp/blog_espress/archives/1707