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连数据类型都是不一致的,不过很显然二者有相同的父类。下面是其绘图结果

在这里插入图片描述

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

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

相关文章

Java最全面试题专题---2、Java集合容器(1)

集合容器概述 什么是集合 **集合框架:**用于存储数据的容器。 集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。 任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。 **接口:**表示集合的抽象数据类…

文件扩展名修改:txt文本如何批量修改为word文档格式,高效修改一步到位

在日常工作中,经常要处理各种类型的文本文件,其中txt文件和Word文档是最为常见的两种格式。有时候,要将大量的txt文件修改为Word文档格式,以便在Microsoft Word中打开、编辑和排版。虽然可以手动将txt文件重命名为.docx格式&#…

InsCode实践分享:如何实现自动化代码审查和质量控制?

文章目录 文章目录 概要 整体架构流程 InsCode的解释 技术展示 小结 概要 InsCode是一款面向中小型企业的代码审查和自动化质量控制工具。本文将分享如何使用InsCode来实现自动化代码审查和质量控制,帮助企业在代码开发和维护过程中降低风险,提高效率和…

Volatility3内存取证工具安装及入门在Linux下的安装教程

1-1. Volatility3简介 Volatility 是一个完全开源的工具,用于从内存 (RAM) 样本中提取数字工件。支持Windows,Linux,MaC,Android等多类型操作系统系统的内存取证。 针对竞赛这块(CTF、技能大赛等)基本上都…

PP和PVC可以相互粘接吗?

PP(聚丙烯)和PVC(聚氯乙烯)是两种不同类型的塑料,它们的化学性质和表面特性不同,因此直接的粘接会比较困难。这是因为它们的分子结构和化学成分不太相容,不易产生牢固的粘接。通常情况&#xff…

使用NVM切换不同版本的node

什么情况会切换不同版本 今天在拉取一个项目之后需要安装一下依赖,然后就出现了下边的问题: 可以看出我目前node是18.18.0,该项目需要8 || 10 || 12 || 14 || 16 || 17,那我总不能去把node卸载再重新下个版本,那么现…

查询优化与事务处理——触发器、事务、锁

一、认识触发器: 触发器是在对表进行插入.更新或删除操作时自动执行的存储过程。触发器通常用于强制业务规则,是--种高级约束.可以定义比用CHECK约束更为复杂的约束,可执行复杂的SQL语句〈如F/WHLE/CASE),…

OpenHarmony创新赛人气投票活动,最佳人气作品由你来定!

12月1日至12月15日 十大入围作品线上投票激战正酣 最佳人气作品,由你来定! 投票链接:OpenHarmony创新赛人气作品投票正式开启——最佳人气作品,由你来定! - 文章 OpenHarmony开发者论坛

C语言leetcode集训二:字符串(1):字符串遍历

今天集训的内容是字符串中的字符串遍历题,仍然是简单题,但也可以掌握一些字符串所必要的知识,加深对字符串的理解,关于字符数组和字符串,字符串的输入输出在这就不再做过多赘述,关于字符串的问题&#xff0…

《IT圈里的“鄙视链”:看不起谁又被谁看不起?》

文章目录 每日一句正能量前言一、编程语言篇二、工具篇三、操作系统篇四、硬件篇五、职场篇后记 每日一句正能量 人的结构就是相互支撑,众人的事业需要每个人的参与。 前言 每个领域都存在着错综复杂的鄙视链,这一点在IT 领域更为突出。从编程语言、工具&#xff0…

简单的 u-popup 弹出框

uniapp中的popup组件可以用于弹出简单的提示框、操作框、菜单等。它可以通过position属性控制弹出框的位置,不同的position值会使得弹出框呈现不同的弹出形式 目录 一、实现思路 二、实现步骤 ①view部分展示 ②JavaScript 内容 ③css中样式展示 三、效果展示 …

C++连接mysql(改进)

使用vs2019对window11中的数据库进行连接 1. 配置连接环境 首先需要把mysql中的头文件和库文件放入到c项目工程中 1.打开安装MySQL的目录,在windows系统中如果是默认路径,应该和我的是一样的:C:\Program Files\MySQL\MySQL Server 8.0 2.找到…

某音上很火的圣诞树分享

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 效果截图&#xff08;这里不给动态了&#xff0c;某音到处都是了&#xff09;&#xff1a; 源代码&#xff1a; <script src"…

LeetCode-1008. 前序遍历构造二叉搜索树【栈 树 二叉搜索树 数组 二叉树 单调栈】

LeetCode-1008. 前序遍历构造二叉搜索树【栈 树 二叉搜索树 数组 二叉树 单调栈】 题目描述&#xff1a;解题思路一&#xff1a;题目大致意思就是给定一个二叉树的前序遍历&#xff0c;求对应的二叉搜索树。一种比较特殊的点是「二叉搜索树」的中序遍历的结果是【有序序列】&am…

智慧水利-城市水循环可视化助力城市水资源可持续发展

2021年《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》明确指出&#xff1a;构建智慧水利体系&#xff0c;以流域为单元提升水情测报和智能调度能力。水利部按照“需求牵引、应用至上、数字赋能、提升能力”总要求&#xff0c;编制了《“十四五”智…

深入理解强化学习——马尔可夫决策过程:预测与控制

分类目录&#xff1a;《深入理解强化学习》总目录 预测&#xff08;Prediction&#xff09;和控制&#xff08;Control&#xff09;是马尔可夫决策过程里面的核心问题。预测&#xff08;评估一个给定的策略&#xff09;的输入是马尔可夫决策过程 < S , A , R , P , γ > …

中职网络安全应急响应—Server2228

应急响应 任务环境说明: 服务器场景:Server2228(开放链接) 用户名:root,密码:p@ssw0rd123 1. 找出被黑客修改的系统别名,并将倒数第二个别名作为Flag值提交; 通过用户名和密码登录系统 在 Linux 中,利用 “alias” 命令去查看当前系统中定义的所有别名 flag:ss …

LeetCode:1631. 最小体力消耗路径(SPFA Java)

目录 1631. 最小体力消耗路径 题目描述&#xff1a; 实现代码与解析&#xff1a; BFSDP 原理思路&#xff1a; 1631. 最小体力消耗路径 题目描述&#xff1a; 你准备参加一场远足活动。给你一个二维 rows x columns 的地图 heights &#xff0c;其中 heights[row][col] 表…

python 爬虫 m3u8 视频文件 加密解密 整合mp4

文章目录 一、完整代码二、视频分析1. 认识m3u8文件2. 获取密钥&#xff0c;构建解密器3. 下载ts文件4. 合并ts文件为mp4 三、总结 一、完整代码 完整代码如下&#xff1a; import requests import re import os from tqdm import tqdm from Crypto.Cipher import AES# 创建临…

通过Jmeter压测存储过程

一、存储过程准备&#xff1a; 1、建立一个空表&#xff1a; 1 CREATE TABLE test_data ( id NUMBER, name VARCHAR2(50), age NUMBER ); 2、建立一个存储过程&#xff1a; CREATE OR REPLACE PROCEDURE insert_test_data(n IN NUMBER) ASBEGIN--EXECUTE IMMEDIATE trunca…