全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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  # windows  # form  # r语言  # 绘图  # r语言绘图案例  # C#-WinForm跨线程修改UI界面的示例  # C#子线程更新UI控件的方法实例总结  # 关于C#委托三种调用的分享使用  # C#跨PC远程调用程序并显示UI界面  # 单击  # 这篇文章  # 报错  # 谢谢大家  # 到此  # 需要用  # 可以自行  # 安装包  # 类库  # 有疑问 


相关文章: 长沙做网站要多少钱,长沙国安网络怎么样?  linux top下的 minerd 木马清除方法  建站DNS解析失败?如何正确配置域名服务器?  如何在云主机快速搭建网站站点?  如何快速登录WAP自助建站平台?  黑客入侵网站服务器的常见手法有哪些?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  临沂网站制作公司有哪些,临沂第四中学官网?  香港服务器如何优化才能显著提升网站加载速度?  如何使用Golang table-driven基准测试_多组数据测量函数效率  如何配置FTP站点权限与安全设置?  C#怎么创建控制台应用 C# Console App项目创建方法  公司网站制作需要多少钱,找人做公司网站需要多少钱?  如何通过智能用户系统一键生成高效建站方案?  如何选择高效响应式自助建站源码系统?  大同网页,大同瑞慈医院官网?  制作国外网站的软件,国外有哪些比较优质的网站推荐?  宝塔新建站点为何无法访问?如何排查?  音乐网站服务器如何优化API响应速度?  如何在宝塔面板中创建新站点?  大型企业网站制作流程,做网站需要注册公司吗?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  网站制作说明怎么写,简述网页设计的流程并说明原因?  建站之星CMS五站合一模板配置与SEO优化指南  建站之星免费版是否永久可用?  C++如何将C风格字符串(char*)转换为std::string?(代码示例)  湖北网站制作公司有哪些,湖北清能集团官网?  内部网站制作流程,如何建立公司内部网站?  如何快速搭建虚拟主机网站?新手必看指南  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  免费视频制作网站,更新又快又好的免费电影网站?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  如何通过WDCP绑定主域名及创建子域名站点?  详解jQuery停止动画——stop()方法的使用  山东云建站价格为何差异显著?  如何快速生成ASP一键建站模板并优化安全性?  建站主机选哪种环境更利于SEO优化?  教学网站制作软件,学习*后期制作的网站有哪些?  广州营销型建站服务商推荐:技术优势与SEO优化解析  香港服务器建站指南:免备案优势与SEO优化技巧全解析  手机网站制作与建设方案,手机网站如何建设?  制作网站的基本流程,设计网站的软件是什么?  香港服务器租用每月最低只需15元?  如何在建站之星绑定自定义域名?  浅谈Javascript中的Label语句  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。