Detaillierte Einführung in die Methode zur Verwendung von C# zur Implementierung von Windows Form, die R zum Zeichnen und Anzeigen aufruft (Bild)

黄舟
Freigeben: 2017-03-17 13:10:21
Original
2252 Leute haben es durchsucht

Wie wir alle wissen, ist R-Software sehr leistungsfähig und kann verschiedene Statistiken erstellen und Grafiken ausgeben. Im Folgenden wird eine Methode für die Kommunikation zwischen der R-Sprache und C# sowie eine Methode zum Anzeigen von RZeichnungsergebnissen auf der WinForm-Benutzeroberfläche vorgestellt, wie in beschrieben Der Artikel ist sehr detailliert, Freunde in Not können sich darauf beziehen.

1. Vorbereitende Maßnahmen

Um die R-Software zu installieren, müssen Sie bei 64-Bit-Aufrufen Fehler melden . Die andere Sache besteht darin, R zur Computerumgebungsvariablen hinzuzufügen.

Öffnen Sie die R-Software und installieren Sie das Scatterplot3d-Paket. Dieses R-Paket wird für die Demonstration benötigt.

2. Erstellen Sie das Projekt GraphGenerateByR. Die Projektstruktur ist wie folgt:

Hinweis: Hier müssen Sie die RDotNetKlassenbibliothek vorstellen, Sie können sie selbst herunterladen: http://rdotnet.codeplex.com/

3. Hauptformularcode

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();
   }
  }
 }
}
Nach dem Login kopieren

4. Ausführen:

Nachdem Sie auf „Plot“ geklickt haben, rufen Sie den Standard-R-Code auf. Die Struktur ist wie folgt:

Geben Sie die rechtliche R-Zeichnungsanweisung ein, klicken Sie erneut auf „Plot“. Das Ergebnis ist wie folgt :

Zusammenfassung

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Methode zur Verwendung von C# zur Implementierung von Windows Form, die R zum Zeichnen und Anzeigen aufruft (Bild). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!