Introduction détaillée à la méthode d'utilisation de C# pour implémenter Windows Form appelant R pour le dessin et l'affichage (image)

黄舟
Libérer: 2017-03-17 13:10:21
original
2251 Les gens l'ont consulté

Comme nous le savons tous, le logiciel R est très puissant et peut effectuer diverses statistiques et graphiques de sortie. Ce qui suit présente une méthode de communication entre le langage R et C#, ainsi qu'une méthode d'affichage des résultats Rdrawing sur l'interface utilisateur WinForm, comme décrit dans l'article C'est très détaillé, les amis dans le besoin peuvent s'y référer.

1. Préparation des prérequis

Pour installer le logiciel R, vous devez installer le logiciel R 32 bits. Les appels 64 bits signaleront les erreurs. . L'autre chose est d'ajouter R à l'environnement informatique variable .

Ouvrez le logiciel R et installez le package scatterplot3d. Ce package R est nécessaire pour la démonstration.

2. Créer le projet GraphGenerateByR La structure du projet est la suivante :

Remarque : Ici, vous devez présenter la bibliothèque de classes RDotNet, vous pouvez la télécharger vous-même : http://rdotnet.codeplex.com/

3. Code du formulaire principal

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();
   }
  }
 }
}
Copier après la connexion

4. Après avoir cliqué sur plot, appelez le code R par défaut, la structure est la suivante :

Entrez la déclaration légale du dessin R, cliquez à nouveau sur Plot, le résultat est le suivant :

Résumé

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!