zoukankan      html  css  js  c++  java
  • C#建WindowForm调用R可视化

    众所周知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,结果如下:

    总结

    R语言对中文支持不算友好,所以很容易出现中文乱码;

    以上就是详细介绍使用C#实现Windows Form调用R进行绘图与显示的方法(图)的详细内容,更多请关注php中文网其它相关文章!

  • 相关阅读:
    实现免费WiFi无线共享
    详解spring配置文件
    P1886 滑动窗口 /【模板】单调队列
    P3370 【模板】字符串哈希
    P3371 【模板】单源最短路径(弱化版)
    P3367 【模板】并查集
    P1177 【模板】快速排序
    P3382 【模板】三分法
    P3374 【模板】树状数组 1
    P1226 【模板】快速幂||取余运算
  • 原文地址:https://www.cnblogs.com/sumuncle/p/8306930.html
Copyright © 2011-2022 走看看