ホームページ  >  記事  >  バックエンド開発  >  C# を使用して R を呼び出して描画および表示する Windows フォームを実装する方法の詳細な紹介 (図)

C# を使用して R を呼び出して描画および表示する Windows フォームを実装する方法の詳細な紹介 (図)

黄舟
黄舟オリジナル
2017-03-17 13:10:212262ブラウズ

ご存知のとおり、R ソフトウェアは非常に強力で、さまざまな統計を実行し、グラフィックを出力できます。以下では、R 言語と C# 間の通信方法と、Rdrawing の結果を WinForm UI インターフェイスに表示する方法について詳しく紹介しています。必要な方は参考にしてください。 。

1. 前提条件の準備

R ソフトウェアをインストールするには、32 ビットの R ソフトウェアをインストールする必要があり、64 ビットを呼び出すとエラーが報告されます。もう 1 つは、コンピューター環境変数に R を追加することです。

R ソフトウェアを開き、scatterplot3d パッケージをインストールします。この R パッケージはデモンストレーションに必要です。

2. プロジェクトGraphGenerateByRを作成します。プロジェクトの構造は次のとおりです:

注: ここでRDotNetクラスライブラリを導入する必要があります。それは自分でダウンロードできます。 http://rdotnet.codeplex.com/

3. メインフォームコード

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=&#39;blue&#39;, col.grid=&#39;lightblue&#39;,main=&#39;3d绘图&#39;,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=&#39;{0}&#39;,bg =&#39;transparent&#39;,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();
   }
  }
 }
}

4. プロットをクリックすると、デフォルトの R コードが呼び出されます。構造は次のとおりです。 :

法的な R 描画ステートメントを入力し、再度 [プロット] をクリックすると、結果は次のようになります:

概要

以上がC# を使用して R を呼び出して描画および表示する Windows フォームを実装する方法の詳細な紹介 (図)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。