>  기사  >  백엔드 개발  >  그리기 및 표시를 위해 R을 호출하는 Windows Form을 구현하기 위해 C#을 사용하는 방법에 대한 자세한 소개(그림)

그리기 및 표시를 위해 R을 호출하는 Windows Form을 구현하기 위해 C#을 사용하는 방법에 대한 자세한 소개(그림)

黄舟
黄舟원래의
2017-03-17 13:10:212258검색

우리 모두 알고 있듯이 R 소프트웨어는 매우 강력하며 다양한 통계 및 출력 그래픽을 수행할 수 있습니다. 다음은 R 언어와 C# 간의 통신 방법과 R그리기 결과를 ​​WinForm UI 인터페이스에 표시하는 방법을 소개합니다. 기사 매우 자세해서 도움이 필요한 친구들이 참고할 수 있습니다.

1. 전제조건

R 소프트웨어를 설치하려면 32비트 R 소프트웨어를 설치해야 하며, 다음과 같은 경우 오류가 발생합니다. 64비트를 호출합니다. 또 하나는 컴퓨터 환경변수에 R을 추가하는 것입니다.

R 소프트웨어를 열고 이 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();
   }
  }
 }
}

실행:

plot을 클릭한 후 기본 R 코드를 호출하면 구조는 다음과 같습니다.

적절한 R 도면 문을 입력하고 Plot을 다시 클릭하면 결과는 다음과 같습니다.

요약

위 내용은 그리기 및 표시를 위해 R을 호출하는 Windows Form을 구현하기 위해 C#을 사용하는 방법에 대한 자세한 소개(그림)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.