c#用Gnuplot画图源码

直接调用这个类即可,需要下载个GnuPlot安装下。

// Author: Leonardo Tazziniusing System;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;/// <summary>
/// Tested with Gnuplot 5.2
/// </summary>
public class GnuPlot
{public GnuPlot(){// Default path for gnuplotthis.Path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "gnuplot\\bin\\gnuplot.exe");// TODO: Check if path is valid}public GnuPlot(string path){this.Path = path;}/// <summary>/// Path of gnuplot.exe/// </summary>public string Path { get; set; }/// <summary>/// Graph input CSV with GnuPlot. NumWaves is the number of channels to draw. If imageOut a PNG image is saved into out.png and displayed. /// </summary>public void DrawGraph(string csvFileName, int numWaves, bool generatePngImage = true){// gnuplot.exe not foundif(!File.Exists(Path)){MessageBox.Show("gnuplot.exe not found. Please check the path.");return;}var gnuPlot = new Process();gnuPlot.StartInfo.FileName = Path;gnuPlot.StartInfo.CreateNoWindow = true;gnuPlot.StartInfo.UseShellExecute = false;gnuPlot.StartInfo.RedirectStandardInput = true;gnuPlot.Start();StreamWriter gnuPlotSw = gnuPlot.StandardInput;if (generatePngImage){// TODO: Remove dependency from Windows FormsRectangle bounds = Screen.PrimaryScreen.WorkingArea;gnuPlotSw.WriteLine("set terminal png size " + (bounds.Width * 0.9) + "," + (bounds.Height * 0.8));gnuPlotSw.WriteLine("set out 'out.png'");}gnuPlotSw.WriteLine("set style data lines");      //linespointsgnuPlotSw.WriteLine("set datafile separator ';'");//gnuPlotSw.WriteLine("set decimalsign locale; set decimalsign ','");gnuPlotSw.WriteLine("set xlabel 'time  (s)'");gnuPlotSw.WriteLine("set ylabel 'value (v)'");gnuPlotSw.WriteLine("set grid");//gnuPlotSw.WriteLine("set xtics 0,0.5");//gnuPlotSw.WriteLine("set ytics 0,5");// TODO: evaluate add "every .." to gnuplot cmd line    gnuPlotSw.Write("plot '" + System.IO.Path.GetFullPath(csvFileName) + "' using 1:2 title 'CH1'");if (numWaves == 2)gnuPlotSw.WriteLine(", '' using 1:3 title 'CH2'");elsegnuPlotSw.Write("\n");gnuPlotSw.Flush();if (generatePngImage){gnuPlotSw.WriteLine("exit");gnuPlotSw.Flush();gnuPlot.WaitForExit();Process.Start("out.png");}gnuPlot.Close();}}

读吧数据存为csv,传入DrawGraph即可;数据如下:

TIME(s);CH1(v);
-600.99999949;1.5001;
-599.99999949;-0.0598999999999998;
-598.99999949;-0.0398999999999998;
-597.99999949;-0.0398999999999998;
-596.99999949;-0.0398999999999998;
-595.99999949;-0.0398999999999998;
-594.99999949;-0.0398999999999998;
-593.99999949;-0.0398999999999998;
-592.99999949;-0.0598999999999998;
-591.99999949;-0.0398999999999998;
-590.99999949;-0.0398999999999998;
-589.99999949;-0.0598999999999998;
-588.99999949;-0.0398999999999998;
-587.99999949;-0.0398999999999998;
-586.99999949;-0.0398999999999998;
-585.99999949;-0.0598999999999998;

显示示意:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/143978.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

stm32学习笔记:OLED显示屏

一、OLED简介 OLED:有机发光二极管&#xff0c;供电∶3~5.5V&#xff0c;通信协议︰I2C/SPI&#xff0c;分辨率∶12864 二、常用的调试方式 串口调试∶通过串口通信&#xff0c;将调试信息发送到电脑端&#xff0c;电脑使用串口助手显示调试信息 显示屏调试∶直接将显示屏连接…

Stm32_标准库_GPIOA初始化

代码&#xff1a; #include "stm32f10x.h" // Device headerGPIO_InitTypeDef GPIO_InitStructur;//定义变量结构体int main(void){/*使用RCC开启GPIO的时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//开启PA端口时钟/*使用GPIO_I…

VC++判断程序是否已经运行;仅运行一次

VC判断程序是否已经运行&#xff1b;仅运行一次 BOOL CClientApp::InitInstance() {...//判断程序是否已经运行&#xff1b;仅运行一次CreateMutex(NULL,true,_T("xxxxx")); //xxxxx&#xff1a;为程序标识码if(GetLastError()ERROR_ALREADY_EXISTS) { AfxMess…

Windows Server 2012 R2 安装 .NET Framework 4.6.1

服务器操作系统是 Windows Server 2012 R2 版本&#xff0c;在安装 .NET Framework 4.6.1 过程中出现报错&#xff0c;报错截图如下&#xff1a; 通过上报报错可以发现是缺少对应的 KB2919355 更新&#xff0c;只有安装了此依赖才能在 Windows 8.1 或 Windows Server 2012 R2 …

Django Web开发入门基础

官方有很详细的文档&#xff0c;但是看过几遍之后如果要翻找还是有点麻烦&#xff0c;本文算作是学习笔记&#xff0c;提取一些关键点记录下来&#xff0c;另附上官方教程 编写你的第一个 Django 应用 注&#xff1a; 文中的指令使用py&#xff0c;是在Windows上&#xff0c;ma…

LIMS实验室信息管理系统源码 基于计算机的数据处理技术、数据存储技术、网络传输技术、自动化仪器分析技术于一体

LIMS 是一个集现代化管理思想与基于计算机的数据处理技术、数据存储技术、网络传输技术、自动化仪器分析技术于一体&#xff0c;以实验室业务和管理工作为核心&#xff0c;遵循实验室管理国际规范&#xff0c;实现对实验室全方位管理的信息管理系统。 LIMS将样品管理、数据管理…

JDK1.8新特性

JDK1.8新特性 &#x1f353;IDE环境调整&#x1f353;lambda表达式&#x1f352;代码实现&#x1f352;常用内置函数式接口 &#x1f353;接口新增方法&#x1f353;Stream流&#x1f352;reduce终结&#x1f352;并行流 &#x1f353;IDE环境调整 &#x1f353;lambda表达式 ⭐…

基于SSM+Vue的医院住院综合服务管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

17.适配器模式(Adapter)

意图&#xff1a;将一个类的接口转换为Client希望的另一个接口&#xff0c;使得原本由于接口不兼容而不能一起工作的那些类在一起工作。 UML图 Target&#xff1a;定义Client使用的与特定领域相关的接口。 Client&#xff1a;与符合Target接口的对象协同工作。 Adaptee&#xf…

一文了解“期刊”、“JCR分区”、“中科院分区”

本篇文章是博主在知识拓展学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对相关领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在知识拓展笔记专栏&#xff1a;…

七天学会C语言-第六天(指针)

1.指针变量与普通变量 指针变量与普通变量是C语言中的两种不同类型的变量&#xff0c;它们有一些重要的区别和联系。 普通变量是一种存储数据的容器&#xff0c;可以直接存储和访问数据的值。&#xff1a; int num 10; // 定义一个整数型普通变量num&#xff0c;赋值为10在例…

Win开启Telnet功能

Win10 开启Telnet功能 很多时候&#xff0c;我们在cmd下使用telnet功能发现显示&#xff1a;‘telnet’不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 那要怎么办呢&#xff0c;接下来我们以win10为例&#xff0c;教大家如何打开telnet功能&#xff01; 1.打…

ChatGPT批量写作文章软件

什么是ChatGPT批量写作文章。简单来说&#xff0c;它是一种使用ChatGPT技术的方法&#xff0c;可以帮助您批量生成各种类型的文章和内容。无论您是需要新闻报道、博客文章、产品描述、社交媒体帖子还是其他类型的内容&#xff0c;ChatGPT都能满足您的需求。它可以在极短的时间内…

pt28django教程

缓存 缓存是一类可以更快的读取数据的介质统称&#xff0c;读取硬盘、较复杂的计算、渲染都会产生较大的耗时。数据变化频率不会很高的场景适合使用缓存。使用缓存场景&#xff1a;博客列表页、电商商品详情页、缓存导航及页脚。 Django中设置缓存 Django中提供多种缓存方式…

windows server 远程桌面服务配置和授权解决方法

适用&#xff1a;win server 2016以上 win server默认的连接数是两个用户。 1.添加远程桌面授权服务 第一步&#xff1a;服务器管理 - 添加角色和功能打开添加角色和功能向导窗口&#xff0c;选择基于角色或给予功能安装 第二步&#xff1a;添加远程桌面会话主机和远程桌面授…

TikTok的伦理挑战:虚拟世界与现实世界的交汇

在数字时代&#xff0c;社交媒体平台已经不再只是一个信息传播的工具&#xff0c;它已经深刻地改变了我们的社交行为、价值观和伦理观。 而在这一领域的佼佼者之一&#xff0c;TikTok&#xff0c;正面临着伦理挑战&#xff0c;这是虚拟世界与现实世界交汇的产物。 本文将深入…

嵌入式Linux应用开发-基础知识-第三章 LED原理图-GPIO及操作

嵌入式Linux应用开发-基础知识-第三章 LED原理图-GPIO及操作 第三章 硬件知识_LED 原理图3.1 先来讲讲怎么看原理图 第四章 普适的 GPIO 引脚操作方法4.1 GPIO 模块一般结构4.2 GPIO 寄存器操作4.3 GPIO 的其他功能&#xff1a;防抖动、中断、唤醒 第五章 具体单板的 GPIO 操作…

若依框架前端切换TagView时刷新问题

普通view切换时刷新 原因是view的name与在菜单填写的大小写不一致&#xff0c;按若依框架规则&#xff0c;路由地址必须写为 camel 驼峰命名形式&#xff0c;组件名称必须写为 pascal首字母全大写的形式。 参考&#xff1a;https://www.cnblogs.com/shayloyuki/p/16599719.htm…

SOC芯片学习--GPIO简介

原创 硬件设计技术 硬件设计技术 2023-07-20 00:04 发表于广东 收录于合集#集成电路--IC7个 一、GPIO定义、分类&#xff1a; GPIO&#xff08;英语&#xff1a;General-purpose input/output&#xff09;&#xff0c;通用型之输入输出的简称&#xff0c;其接脚可以供使用者由…

linux 安装 wordpress

文章目录 linux 安装 wordpress1. wordpress 简介2. wordpress功能和特点3. 部署要求4. 环境搭建4.1 部署 nginx4.1.1 新增配置文件 4.2 部署 PHP74.2.1 查看当前版本4.2.2 YUM 安装 PHP74.2.3 查看 PHP 版本4.2.4 启动PHP-FPM4.2.5 修改配置文件4.2.6 重启服务 4.3 部署 mysql…