詳細介紹使用C#實現Windows Form調用R進行繪圖與顯示的方法

來源:互聯網
上載者:User
眾所周知R軟體功能非常強大,可以很好的進行各類統計,並能輸出圖形。下面介紹一種R語言和C#進行通訊的方法,並將R繪圖結果顯示到WinForm UI介面上的方法,文中介紹的很詳細,需要的朋友可以參考下。

一、前提準備

安裝R軟體,需要安裝32位的R軟體,64位的調用會報錯。另外就是講R添加到電腦環境變數中。

開啟R軟體,安裝包 scatterplot3d,示範需要用到此R包。

二、建立項目GraphGenerateByR,項目結構如下:

注意:這裡需要引入RDotNet類庫,可以自行下載:http://rdotnet.codeplex.com/

三、Main表單代碼

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace GraphGenerateByR{ using RDotNet; public partial class Main : Form {  public Main()  {   InitializeComponent();  }  REngine engine = null;  string Rcode = "";  private void btnPlot_Click(object sender, 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='3d繪圖',pch=20)       ";    }    else    {     Rcode = this.txtRcode.Text;    }    //R.3.2.4    engine = REngine.GetInstance();    engine.Initialize();    //圖片加入GUID,防止重名(還有一種就是先刪除後儲存)    string rnd = System.Guid.NewGuid().ToString().Replace("-", "");    string filename ="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()");    string path = System.IO.Path.GetFullPath(filename);    Bitmap image = new Bitmap(path);    ptbGraphic.Image = image;   }   catch(Exception ex)   {    MessageBox.Show(ex.Message);   }    }  private void Main_FormClosing(object sender, FormClosingEventArgs e)  {   if(engine!=null)   {    //clean up    engine.Dispose();   }  } }}

四、運行:

單擊plot後,調用預設R代碼,結構如下:

輸入合法的R繪圖語句,再次單擊Plot,結果如下:

總結

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.