C#实现Windows Form调用R进行绘图与显示的方法
一、前提准备
安装R软件,需要安装32位的R软件,64位的调用会报错。另外就是讲R添加到电脑环境变量中。
打开R软件,安装包 scatterplot3d,演示需要用到此R包。
二、创建项目GraphGenerateByR,项目结构如下:
注意:这里需要引入RDotNet类库,可以自行下载:http://rdotnet.codeplex.com/
三、Main窗体代码
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(); } } } }
四、运行:
单击plot后,调用默认R代码,结构如下:
输入合法的R绘图语句,再次单击Plot,结果如下:
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。
上一篇:C# 实例化接口对象的方法
栏 目:C#教程
下一篇:C# 创建,读取,写入XML文件
本文标题:C#实现Windows Form调用R进行绘图与显示的方法
本文地址:https://www.xiuzhanwang.com/a1/C_jiaocheng/5862.html
您可能感兴趣的文章
- 01-10WinForm限制窗体不能移到屏幕外的方法
- 01-10WinForm绘制圆角的方法
- 01-10C#实现txt定位指定行完整实例
- 01-10WinForm实现仿视频播放器左下角滚动新闻效果的方法
- 01-10C#实现清空回收站的方法
- 01-10C#实现读取注册表监控当前操作系统已安装软件变化的方法
- 01-10C#实现多线程下载文件的方法
- 01-10C#实现Winform中打开网页页面的方法
- 01-10C#实现远程关闭计算机或重启计算机的方法
- 01-10C#自定义签名章实现方法
阅读排行
本栏相关
- 01-10C#通过反射获取当前工程中所有窗体并
- 01-10关于ASP网页无法打开的解决方案
- 01-10WinForm限制窗体不能移到屏幕外的方法
- 01-10WinForm绘制圆角的方法
- 01-10C#实现txt定位指定行完整实例
- 01-10WinForm实现仿视频播放器左下角滚动新
- 01-10C#停止线程的方法
- 01-10C#实现清空回收站的方法
- 01-10C#通过重写Panel改变边框颜色与宽度的
- 01-10C#实现读取注册表监控当前操作系统已
随机阅读
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法实例总结
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 04-02jquery与jsp,用jquery
- 01-11ajax实现页面的局部加载
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 01-10SublimeText编译C开发环境设置