一、前提准备
安装R软件,需要安装32位的R软件,64位的调用会报错。另外就是讲R添加到电脑环境变量中。
打开R软件,安装包 scatterplot3d,演示需要用到此R包。
二、创建项目GraphGenerateByR,项目结构如下:
注意:这里需要引入RDotNet类库,可以自行下载:http://rdotnet.codeplex.com/
三、Main窗体代码
代码如下 | 复制代码 |
usingSystem; usingSystem.Collections.Generic; usingSystem.ComponentModel; usingSystem.Data; usingSystem.Drawing; usingSystem.Linq; usingSystem.Text; usingSystem.Windows.Forms;
namespaceGraphGenerateByR { usingRDotNet; publicpartialclassMain : Form { publicMain() { InitializeComponent(); } REngine engine =null;
stringRcode =""; privatevoidbtnPlot_Click(objectsender, EventArgs e) { try { if(this.txtRcode.Text=="") { Rcode =@"library('scatterplot3d') z <- seq(-10, 10, 0.01) x <- cos(z) y <- sin(z) scatterplot3d(x, y, z, highlight.3d=TRUE, col.axis='blue', col.grid='lightblue',main=Ɖd绘图',pch=20) "; } else { Rcode =this.txtRcode.Text; }
//R.3.2.4 engine = REngine.GetInstance(); engine.Initialize(); //图片加入GUID,防止重名(还有一种就是先删除后保存) stringrnd = System.Guid.NewGuid().ToString().Replace("-",""); stringfilename ="i"+ rnd+"__Rimage.png"; engine.Evaluate(string.Format("png(file='{0}',bg ='transparent',width={1},height={2})", filename,this.ptbGraphic.Width,this.ptbGraphic.Height));
//engine.Evaluate(@"x <- (0:12) * pi / 12 // y <- cos(x) // plot(x,y); // "); engine.Evaluate(Rcode); engine.Evaluate("dev.off()"); stringpath = System.IO.Path.GetFullPath(filename);
Bitmap image =newBitmap(path); ptbGraphic.Image = image; } catch(Exception ex) { MessageBox.Show(ex.Message); }
}
privatevoidMain_FormClosing(objectsender, FormClosingEventArgs e) { if(engine!=null) { //clean up engine.Dispose(); } } } } |
四、运行:
单击plot后,调用默认R代码,结构如下:
输入合法的R绘图语句,再次单击Plot,结果如下: