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

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

Mar 17, 2017 pm 01:10 PM

ご存知のとおり、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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

マルチスレッドと非同期C#の違い マルチスレッドと非同期C#の違い Apr 03, 2025 pm 02:57 PM

マルチスレッドと非同期の違いは、マルチスレッドが複数のスレッドを同時に実行し、現在のスレッドをブロックせずに非同期に操作を実行することです。マルチスレッドは計算集約型タスクに使用されますが、非同期はユーザーインタラクションに使用されます。マルチスレッドの利点は、コンピューティングのパフォーマンスを改善することですが、非同期の利点はUIスレッドをブロックしないことです。マルチスレッドまたは非同期を選択することは、タスクの性質に依存します。計算集約型タスクマルチスレッド、外部リソースと相互作用し、UIの応答性を非同期に使用する必要があるタスクを使用します。

XML形式を開く方法 XML形式を開く方法 Apr 02, 2025 pm 09:00 PM

ほとんどのテキストエディターを使用して、XMLファイルを開きます。より直感的なツリーディスプレイが必要な場合は、酸素XMLエディターやXMLSPYなどのXMLエディターを使用できます。プログラムでXMLデータを処理する場合、プログラミング言語(Pythonなど)やXMLライブラリ(XML.ETREE.ELEMENTTREEなど)を使用して解析する必要があります。

マルチスレッドをC言語で実装する4つの方法 マルチスレッドをC言語で実装する4つの方法 Apr 03, 2025 pm 03:00 PM

言語のマルチスレッドは、プログラムの効率を大幅に改善できます。 C言語でマルチスレッドを実装する4つの主な方法があります。独立したプロセスを作成します。独立して実行される複数のプロセスを作成します。各プロセスには独自のメモリスペースがあります。擬似マルチスレッド:同じメモリ空間を共有して交互に実行するプロセスで複数の実行ストリームを作成します。マルチスレッドライブラリ:pthreadsなどのマルチスレッドライブラリを使用して、スレッドを作成および管理し、リッチスレッド操作機能を提供します。 Coroutine:タスクを小さなサブタスクに分割し、順番に実行する軽量のマルチスレッド実装。

C#ジャミングを防ぐためのマルチスレッドメソッド C#ジャミングを防ぐためのマルチスレッドメソッド Apr 03, 2025 pm 02:54 PM

C#で「スタック」マルチスレッドを避けるための次の方法:UIスレッドでの時間のかかる操作を避けます。タスクと非同期を使用して、時間のかかる操作を非同期に実行します。 application.current.dispatcher.invokeを介してUIスレッドでUIを更新します。キャンセルトークンを使用して、タスクのキャンセルを制御します。スレッドプールを合理的に使用して、スレッドの過度の作成を避けます。コードの読みやすさと保守性に注意して、簡単にデバッグできます。ログは各スレッドに記録され、簡単にデバッグされます。

CとC#の違いと接続は何ですか? CとC#の違いと接続は何ですか? Apr 03, 2025 pm 10:36 PM

CとC#には類似点がありますが、それらは完全に異なります。Cはプロセス指向の手動メモリ管理、およびシステムプログラミングに使用されるプラットフォーム依存言語です。 C#は、デスクトップ、Webアプリケーション、ゲーム開発に使用されるオブジェクト指向のガベージコレクション、およびプラットフォーム非依存言語です。

XMLを単語に変換する方法 XMLを単語に変換する方法 Apr 03, 2025 am 08:15 AM

XMLを単語に変換するには、Microsoft Wordの使用、XMLコンバーターの使用、またはプログラミング言語の使用方法が3つあります。

Advanced C#.NET:並行性、並列性、およびマルチスレッド説明が説明されています Advanced C#.NET:並行性、並列性、およびマルチスレッド説明が説明されています Apr 03, 2025 am 12:01 AM

C#.NETは、同時、並列、およびマルチスレッドプログラミングのための強力なツールを提供します。 1)スレッドクラスを使用してスレッドを作成および管理します。2)タスククラスは、スレッドプールを使用してリソース利用を改善するために、より高度な抽象化を提供します。

XMLの形式を変更する方法 XMLの形式を変更する方法 Apr 03, 2025 am 08:42 AM

XML形式を変更する方法はいくつかあります。Atepadなどのテキストエディターを使用して手動で編集する。 XmlBeautifierなどのオンラインまたはデスクトップXMLフォーマットツールを使用して自動的にフォーマットします。 XSLTなどのXML変換ツールを使用して変換ルールを定義します。または、Pythonなどのプログラミング言語を使用して解析および操作します。元のファイルを変更してバックアップするときは注意してください。

See all articles