C# 绘制曲线的ScottPlot.NET

news/2024/10/2 12:32:01

 

ScottPlot 是一个免费的开源 .NET 绘图库,可以轻松交互式地显示大型数据集。折线图、条形图、饼图、散点图等只需几行代码即可创建。

ScottPlot - .NET 的交互式绘图库

ScottPlot 4.1 Demo   官方的demo是最好的学习例程

 解压后的文件清单如下,

 双击 ScottPlot.Demo.WinForms.exe,查看不同demo的效果

查找demo对应的源代码点击如下的连接到ScottPlot 官网

 再点击Github  跳转至 GitHub - ScottPlot/ScottPlot: Interactive plotting library for .NET

 例如我要查找 DataLogger的源码

 

 在Visual Studio 2017中利用Nuget包管理下载ScottPlot,如下图

在使用ScottPlot.NET之前需要了解VS基本的配置需求,不同版本的ScottPlot所需的.NET framework版本也不一样

 如上图我准备使用V4最高版本V4.174,根据依赖需求,我准备切换.NETFramework4.7.2,如何从.NETFramework4切换

到.NETFramework4.7.2,这里报错是因为缺少app.config的配置信息。

添加如下内容到app.config文件中

 参考demo的源码移植到自己的程序里

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Windows.Forms;
  9 
 10 
 11 namespace CMXM
 12 {
 13     public partial class Debug : Form
 14     {
 15 
 16         readonly System.Windows.Forms.Timer AddNewDataTimer = new Timer() { Interval = 10, Enabled = true };
 17         readonly System.Windows.Forms.Timer UpdatePlotTimer = new Timer() { Interval = 50, Enabled = true };
 18 
 19         readonly ScottPlot.Plottable.DataLogger Logger;
 20 
 21         readonly Random Rand = new Random();
 22 
 23         double LastPointValue = 0;
 24 
 25 
 26         public Debug()
 27         {
 28             InitializeComponent();
 29 
 30             Logger = formsPlot1.Plot.AddDataLogger(label: "trace");
 31 
 32             AddRandomWalkData(1000);
 33             btnFull_Click(null, EventArgs.Empty);
 34             cbView_CheckedChanged(null, EventArgs.Empty);
 35 
 36             AddNewDataTimer.Tick += (s, e) => AddRandomWalkData(10);
 37             UpdatePlotTimer.Tick += UpdatePlotTimer_Tick;
 38         }
 39 
 40         private void AddRandomWalkData(int count)
 41         {
 42             for (int i = 0; i < count; i++)
 43             {
 44                 LastPointValue = LastPointValue + Rand.NextDouble() - .5;
 45                 Logger.Add(Logger.Count, LastPointValue);
 46             }
 47         }
 48 
 49         private void UpdatePlotTimer_Tick(object sender, EventArgs e)
 50         {
 51             if (Logger.Count == Logger.CountOnLastRender)
 52                 return;
 53 
 54             formsPlot1.Refresh();
 55 
 56             this.metroTextBoxInfo.Text = $"DataLogger Demo ({Logger.Count:N0} points)";
 57         }
 58 
 59         private void cbView_CheckedChanged(object sender, EventArgs e)
 60         {
 61             Logger.ManageAxisLimits = cbEnableViewManagement.Checked;
 62 
 63             // disable mouse interaction if axis limits are managed automatically
 64             formsPlot1.Configuration.Pan = !cbEnableViewManagement.Checked;
 65             formsPlot1.Configuration.Zoom = !cbEnableViewManagement.Checked;
 66         }
 67 
 68         private void btnFull_Click(object sender, EventArgs e)
 69         {
 70             Logger.ViewFull();
 71             formsPlot1.Plot.Title("Full");
 72             formsPlot1.Refresh();
 73         }
 74 
 75         private void btnJump_Click(object sender, EventArgs e)
 76         {
 77             Logger.ViewJump();
 78             formsPlot1.Plot.Title("Jump");
 79             formsPlot1.Refresh();
 80         }
 81 
 82         private void btnSlide_Click(object sender, EventArgs e)
 83         {
 84             Logger.ViewSlide();
 85             formsPlot1.Plot.Title("Slide");
 86             formsPlot1.Refresh();
 87         }
 88 
 89         private void btnClear_Click(object sender, EventArgs e)
 90         {
 91             Logger.Clear();
 92             formsPlot1.Refresh();
 93         }
 94 
 95         private void chk_showLegend_CheckedChanged(object sender, EventArgs e)
 96         {
 97             formsPlot1.Plot.Legend(chk_showLegend.Checked);
 98             formsPlot1.Refresh();
 99         }
100     }
101 }

运行效果

 

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

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

相关文章

Docker环境搭建以及常见问题

Docker环境搭建 主机环境要求在ubuntu16_20之间 Docker安装和卸载 apt安装方式 # 旧版本的docker sudo apt install docker.io sudo apt-get purge docker.io sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd官方安装方式 # 首先安装一些依赖包,使得能够通过HTT…

图文教程:从0到1将项目发布到 Maven 中央仓库

前言 本文基于官方文档 https://central.sonatype.org/publish/publish-guide/ 编写。 发布步骤:创建账号 创建用户 Token 创建命名空间 配置 GPG 配置项目 发布注意事项:发布成功的项目无法修改或者删除准备阶段 创建账号 已有 Google 或者 Github 账号可以跳过此步骤,可以…

sqlserver数据库下载安装

官网下载地址: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads然后下载它: 然后,看这位博主的,我就懒得写了https://www.bilibili.com/read/cv35599692/

花店鲜花管理与推荐系统+Python+Django网页界面+管理系统+计算机课设

一、介绍 花店鲜花管理与推荐系统。本系统使用Python作为主要开发语言开发的一个花店鲜花管理与推荐的网站平台。 网站前端界面采用HTML、CSS、BootStrap等技术搭建界面。后端采用Django框架处理用户的逻辑请求,并将用户的相关行为数据保存在数据库中。通过Ajax技术实现前后端…

云存储抽象层-FluentStorage

FluentStorage 是一个.NET云存储抽象层,支持多种云服务提供商。它提供了一个统一的API来处理不同云服务提供商的Blob存储(如AWS S3, GCP, FTP, SFTP, Azure Blob/File/Event Hub/Data Lake)和消息传递(如AWS SQS, Azure Queue/ServiceBus)。这个库完全用C#编写,支持.NET …

ISIGHT中CATIA组件的设置

1、环境参数的设置,如下2、设置完成后,运行任务,中途能生成更新参数的文件,也能生成STP文件,但任务运行完后刚被删除。 3、若要保留更新的Catia文件及Stp文件,可以在组件上做修改(真实运行环境中是否删除生成的文件并不影响使用)。 (以上操作即可,也可选择SIMCODE进行…

LCD屏幕显示PNG图像

这段时间在学习正点原子的IMX6ULL开发板,在应用编程中有一个代码练习是需要在LCD屏幕上显示PNG图像,但由于我的屏幕参数和教程中的有些出入,于是经过自己查阅和修改,终于成功在自己的LCD屏幕上显示PNG图像。正点原子LCD屏幕显示PNG图像 本文概要 这段时间在学习正点原子的I…

文档管理神器大搜罗!10款热门工具深度评测

市面上常见的 10 款文档管理工具对比:PingCode;Worktile;飞书文档;腾讯文档;石墨文档;语雀;M-Files;DocuWare;MasterControl;Contentverse;DocuSign 。在今天的数字化时代,文档管理变得越来越重要,无论是对于初创企业还是大型企业。一个常见的挑战是如何找到一个既…