It is well known that R software is very powerful and can perform various statistics and output graphics. The following introduces a method for communication between R language and C#, and a method for displaying R drawing results on the WinForm UI interface. The article introduces It's very detailed, friends in need can refer to it.
1. Prerequisite preparation
#To install R software, you need to install 32-bit R software, and an error will be reported if you call 64-bit. The other thing is to add R to the computer environment variables.
Open the R software and install the scatterplot3d package. This R package is required for the demonstration.
2. Create the projectGraphGenerateByR, the project structure is as follows:
##Note: You need to introduce RDotNet class library here, you can download it yourself: http://rdotnet.codeplex.com/
3. Main form code
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='blue', col.grid='lightblue',main='3d绘图',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='{0}',bg ='transparent',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. Run:
After clicking plot, call the default R code, the structure is as follows: Enter the legal R drawing statement, click Plot again, the result is as follows:##Summarize
The above is the detailed content of Detailed introduction to the method of using C# to implement Windows Form calling R for drawing and display (picture). For more information, please follow other related articles on the PHP Chinese website!