当前位置: 首页 > news >正文

C#科学绘图之scottPlot绘制多个图像

文章目录

    • 示例
    • 移除图像
    • 图例
    • 信号图

scott系列:绘图初步

示例

从名字就能看出,ScottPlot的绘图函数AddScatter的作用是为图窗添加数据点,换言之,每调用一次AddScatter,就可以在图窗中添加一组图像。下面添加两个按钮,分别用于绘制正弦和余弦图像,其正弦按钮的响应函数如下

ScatterPlot sinPlot;
private void btnSin_Click(object sender, RoutedEventArgs e)
{var xs = Enumerable.Range(0, 1000).Select(x => x / 100.0).ToArray();var ys = xs.Select(x => Math.Sin(x)).ToArray();sinPlot = plt.Plot.AddScatter(xs, ys);plt.Refresh();
}

其中,sinPlot被设为全局变量,目的是方便后续用其他按钮来操纵函数图像。余弦图像的相应函数如出一辙,只需把变量名以及 y s ys ys的生成过程更改一下,效果如下

在这里插入图片描述

移除图像

移除图像,只需调用Remove函数,以移除正弦函数为例,其相应动作如下

private void btnRmSin_Click(object sender, RoutedEventArgs e)
{plt.Plot.Remove(sinPlot);plt.Refresh();
}

下面演示一下移除图像的效果,顺便参悟一下弹出窗口的逻辑,所谓弹出窗口,就是把当前图窗中的图形作为一个对象复制一份,然后这个对象将与旧图窗变成陌生人,互不相干。

在这里插入图片描述

图例

若想在图窗中对两个图像做区分,就需要指明图像的Label,仍以正弦函数为例,修改绘制按钮的点击函数,当然余弦函数也做相似处理。

private void btnSin_Click(object sender, RoutedEventArgs e)
{var xs = Enumerable.Range(0, 100).Select(x => x / 10.0).ToArray();var ys = xs.Select(x => Math.Sin(x)).ToArray();sinPlot = plt.Plot.AddScatter(xs, ys,label:"sin");plt.Plot.Legend();plt.Refresh();
}

由于前面 1000 1000 1000个点的绘制效果不太好看,所以上面代码把点数控制在100个,绘制结果如下

在这里插入图片描述

信号图

Scott支持把不同类型的图像在一个图窗中绘制,例如可以同时绘制散点图和信号图,示例如下

SignalPlot sigPlot;
private void btnSignal_Click(object sender, RoutedEventArgs e)
{double[] values = DataGen.RandomWalk(1_000_000, 0.003, 0.5);sigPlot = plt.Plot.AddSignal(values, sampleRate: 48_000);plt.Refresh();
}

这个图像和前面的sinPlot,cosPlot连数据类型都是不一致的,不过很显然二者有相同的父类。下面是其绘图结果

在这里插入图片描述

http://www.lryc.cn/news/260608.html

相关文章:

  • 二百一十五、Flume——Flume拓扑结构之复制和多路复用的开发案例(亲测,附截图)
  • Leetcode—2962.统计最大元素出现至少 K 次的子数组【中等】
  • MapReduce模拟统计每日车流量-解决方案
  • 【深度学习】强化学习(二)马尔可夫决策过程
  • Vue.js 使用基础知识
  • Linux---计划任务
  • .NET微信网页开发之通过UnionID机制解决多应用用户帐号统一问题
  • 【docker】docker入门与安装
  • 视觉学习笔记12——百度飞浆框架的PaddleOCR 安装、标注、训练以及测试
  • 深入分析ClassLocader工作机制
  • 算法通关村第十二关—字符串转换(青铜)
  • C#基础与进阶扩展合集-基础篇(持续更新)
  • ReactJs笔记摘录
  • 2023 re:Invent使用 PartyRock 和 Amazon Bedrock 安全高效构建 AI 应用程序
  • Mac 打不开github解决方案
  • 十五 动手学深度学习v2计算机视觉 ——全连接神经网络FCN
  • elementUI中的 “this.$confirm“ 基本用法,“this.$confirm“ 调换 “确认“、“取消“ 按钮的位置
  • K8S 常用命令
  • 12.使用 Redis 优化登陆模块
  • Nacos-NacosRule 负载均衡—设置集群使本地服务优先访问
  • 软件设计师——信息安全(二)
  • Unity中实现ShaderToy卡通火(原理实现篇)
  • 引迈信息-JNPF平台怎么样?值得入手吗?
  • 大数据云计算——使用Prometheus-Operator进行K8s集群监控
  • [蓝桥杯刷题]合并区间、最长不连续子序列、最长不重复数组长度
  • Hazel引擎学习(十二)
  • 中文字符串逆序输出
  • MySQL BinLog 数据还原恢复
  • 理想汽车校招内推--大量hc等你来
  • RabbitMQ死信队列详解