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

数据图表ScottPlot.WPF用法示例

目录

 一、添加 NuGet 程序包(5.0.47)

二、MainWindow.xaml中添加引用 

三、MainWindow.xaml.cs 具体使用代码 


图表示例:

 一、添加 NuGet 程序包(5.0.47)

二、MainWindow.xaml中添加引用 

<Window x:Class="jssc_analysis2.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d"xmlns:ScottPlot="clr-namespace:ScottPlot.WPF;assembly=ScottPlot.WPF"Title="数据分析" Width="1280" MinWidth="1280"  Height="725" MinHeight="725" Topmost="False" Background="Gray" WindowStartupLocation="CenterScreen"><Grid x:Name="control_grid"><Grid.ColumnDefinitions><ColumnDefinition></ColumnDefinition></Grid.ColumnDefinitions><ScottPlot:WpfPlot x:Name="wpfPlot" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/></Grid>
</Window>

三、MainWindow.xaml.cs 具体使用代码 

private List<DateTime> timeData;
private List<double> priceData;
private Scatter scatterPlot;
private Crosshair crosshair;
private Annotation highlightAnnotation;	//文本提示框private async void Btn_startOnClick(object sender, RoutedEventArgs e)
{timeData = new List<DateTime>();priceData = new List<double>();for (int i = 0; i < pointCount; i++){timeData.Add(startTime.AddMinutes(i * 5)); // 每 5 分钟一个点priceData.Add(Math.Sin(i * 0.1) * 100 + rand.Next(-5, 5)); // 模拟盈亏金额走势}// 转换时间为 double(OADate 格式)double[] xs = timeData.ConvertAll(t => t.ToOADate()).ToArray();double[] ys = priceData.ToArray();// 添加曲线scatterPlot = wpfPlot.Plot.Add.Scatter(xs, ys, ScottPlot.Colors.Red);scatterPlot.LineWidth = 2;scatterPlot.MarkerSize = 4;scatterPlot.MarkerShape = MarkerShape.FilledCircle;crosshair = wpfPlot.Plot.Add.Crosshair(0, 0);crosshair.IsVisible = false;crosshair.MarkerShape = MarkerShape.FilledCircle;crosshair.MarkerSize = 15;// 添加鼠标悬停的文本提示 (Annotation)highlightAnnotation = wpfPlot.Plot.Add.Annotation("");highlightAnnotation.LabelOffsetX = 0;highlightAnnotation.LabelOffsetY = 0;highlightAnnotation.LabelBackgroundColor = ScottPlot.Colors.LightYellow;highlightAnnotation.LabelBorderColor = ScottPlot.Colors.Black;highlightAnnotation.LabelFontSize = 15;highlightAnnotation.IsVisible = false; // 初始时不显示// 配置 X 轴显示时间格式wpfPlot.Plot.Axes.DateTimeTicksBottom();wpfPlot.Refresh();// 绑定鼠标移动事件wpfPlot.MouseMove += WpfPlot_MouseMove;
}private void WpfPlot_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
{// 获取鼠标位置(需转换为图表像素坐标)Pixel mousePixel = new Pixel(x: (int)e.GetPosition(wpfPlot).X,y: (int)e.GetPosition(wpfPlot).Y);Coordinates mouseLocation = wpfPlot.Plot.GetCoordinates(mousePixel);DataPoint nearest = scatterPlot.Data.GetNearest(mouseLocation, wpfPlot.Plot.LastRender);// 将十字线置于突出显示的点上if (nearest.IsReal){crosshair.IsVisible = true;crosshair.Position = nearest.Coordinates;highlightAnnotation.Text = $"Index:{nearest.Index}\r\nNumber:{nearest.Y:0.##}\r\nTime:{DateTime.FromOADate(nearest.X)}";highlightAnnotation.IsVisible = true;}// 当未选择任何点时隐藏十字准线if (!nearest.IsReal && crosshair.IsVisible){crosshair.IsVisible = false;highlightAnnotation.Text = $"";highlightAnnotation.IsVisible = false;}wpfPlot.Refresh(); // 刷新图表
}

另:Annotation暂时无法支持中文,有解决办法的话欢迎留言

相关文章:

数据图表ScottPlot.WPF用法示例

目录 一、添加 NuGet 程序包&#xff08;5.0.47&#xff09; 二、MainWindow.xaml中添加引用 三、MainWindow.xaml.cs 具体使用代码 图表示例&#xff1a; 一、添加 NuGet 程序包&#xff08;5.0.47&#xff09; 二、MainWindow.xaml中添加引用 <Window x:Class"…...

js加密之延伸requestAnimationFrame

简言 上篇文章有提到requestAnimationFrame,只是随笔带过。这篇文章就着重研究一下requestAnimationFrame的运用&#xff0c;以及实际作用。还有关于在js加密技术中的落地实现可行性。 功能说明 小声说一下,做开发的同学一定要学会翻官方文档,我这里直接引用一段官方介绍。 …...

系统架构设计师—计算机基础篇—存储管理

文章目录 基本概念地址重定位 存储管理方案分区存储管理分页存储管理做题的方法地址重定位淘汰页号 分段存储管理段页式存储管理虚拟存储管理 基本概念 地址重定位 地址重定位是指将程序中的虚拟地址&#xff08;逻辑地址&#xff09;变换称内存的真实地址&#xff08;物理地…...

【第二十五周】:DeepPose:通过深度神经网络实现人体姿态估计

DeepPose 摘要Abstract文章信息引言DeepPose归一化网络结构初始网络&#xff08;粗略估计所有关节点位置&#xff09;精细化级联网络&#xff08;分别修正每个关节点的位置&#xff09; 疑问与解决代码实践总结 摘要 这篇博客介绍了DeepPose&#xff0c;这是首个基于深度神经网…...

SVN 简介

SVN 简介 引言 版本控制系统(Version Control System,VCS)是软件开发过程中不可或缺的工具之一。它能够帮助开发者管理代码的版本,追踪代码变更,协同工作,以及确保代码的稳定性和安全性。Subversion(简称SVN)是一种流行的版本控制系统,本文将为您详细介绍SVN的基本概…...

ARM Linux LCD上实时预览摄像头画面

文章目录 1、前言2、环境介绍3、步骤4、应用程序编写4.1、lcd初始化4.2、摄像头初始化4.3、jpeg解码4.4、开启摄像头4.5、完整的程序如下 5、测试5.1、编译应用程序5.2、运行应用程序 6、总结 1、前言 本次应用程序主要针对支持MJPEG格式输出的UVC摄像头。 2、环境介绍 rk35…...

基于DeepSeek 的图生文最新算法 VLM-R1

目录 一、算法介绍 二 算法部署 三 模型下载 四 算法测试 五 可视化脚本 一、算法介绍 VLM-R1:稳定且可通用的 R1 风格大型视觉语言模型 自从 Deepseek-R1 推出以来,出现了许多专注于复制和改进它的作品。在这个项目中,我们提出了 VLM-R1,一种稳定且可通用的 R1 风格…...

《论软件测试中缺陷管理及其应用》审题技巧 - 系统架构设计师

论软件测试中缺陷管理及其应用写作框架 一、考点概述 本论题“论软件测试中缺陷管理及其应用”主要考查的是软件测试领域中的缺陷管理相关知识与实践应用。论题涵盖了以下几个核心内容: 首先,需要理解软件缺陷的基本概念,即软件中存在的破坏正常运行能力的问题、错误或隐…...

MacOS本地部署Deepseek,不联网也可以使用AI,保护隐私

苹果笔记本本地部署deepseek主要用到Ollama与open-webui 1. 安装Ollama “Ollama” 是一个轻量级的 AI 模型运行时环境&#xff08;runtime&#xff09;&#xff0c;旨在简化在本地部署和使用大语言模型&#xff08;LLM&#xff09;的过程。它由 Vicarious 公司开发&#xff…...

python爬虫:pyspider的详细使用

文章目录 一、pyspider介绍1.1 核心概念1.2 与其他爬虫框架的比较二、 安装 pyspider三、编写爬虫脚本四、运行和监控爬虫4.1 启动爬虫4.2 监控任务状态4.3 任务管理五、高级功能5.1 分布式爬取5.2 JavaScript 渲染5.3 数据存储5.4 定时任务5.5 错误处理和重试机制六、示例:采…...

3-5 WPS JS宏 工作表的移动与复制学习笔记

************************************************************************************************************** 点击进入 -我要自学网-国内领先的专业视频教程学习网站 *******************************************************************************************…...

Sqlserver安全篇之_启用TLS即配置SQL Server 数据库引擎以加密连接

官方文档 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/configure-sql-server-encryption?viewsql-server-ver16 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/manage-certificates?viewsql-server-ver15&pre…...

删除变慢问题

问题&#xff1a; 有一个场景&#xff0c;每天都会删除数据&#xff0c;SQL为delete from xxx where record_date < DATE_SUB(now(), INTERVAL ? DAY) limit 1000 &#xff0c;一直循环执行&#xff0c;当执行到最后一次满足条件的时候&#xff0c;就会很慢 原理分析 索引与…...

创建一个MCP服务器,并在Cline中使用,增强自定义功能。

MCP介绍 MCP 是一个开放协议&#xff0c;它标准化了应用程序如何向LLMs提供上下文。可以将 MCP 视为 AI 应用程序的 USB-C 端口。正如 USB-C 提供了一种标准化的方法来将您的设备连接到各种外围设备和配件一样&#xff0c;MCP 提供了一种标准化的方法来将 AI 模型连接到不同的…...

游戏引擎学习第131天

仓库:https://gitee.com/mrxiao_com/2d_game_3 运行游戏并识别我们的小问题 今天的工作重点是对游戏引擎进行架构优化&#xff0c;特别是针对渲染和多线程的部分。目前&#xff0c;我们的目标是让地面块在独立线程上进行渲染&#xff0c;以提高性能。在此过程中&#xff0c;我…...

人大金仓国产数据库与PostgreSQL

一、简介 在前面项目中&#xff0c;我们使用若依前后端分离整合人大金仓&#xff0c;在后续开发过程中&#xff0c;我们经常因为各种”不适配“问题&#xff0c;但可以感觉得到大部分问题&#xff0c;将人大金仓视为postgreSQL就能去解决大部分问题。据了解&#xff0c;Kingba…...

《认知·策略·跃迁:新能源汽车工程师的深度学习系统构建指南》

--- ## 前言&#xff1a;为什么传统学习法正在杀死你的竞争力&#xff1f; 在新能源汽车领域&#xff0c;我们正经历着每18个月知识体系更新迭代的指数级变革。当磷酸铁锂电池能量密度刚突破200Wh/kg时&#xff0c;固态电池已进入量产倒计时&#xff1b;当自动驾驶还在L2级徘…...

存贮论模型案例与Matlab实现

摘要&#xff1a;本文结合存贮论确定性模型&#xff0c;详细解析经济订购批量&#xff08;EOQ&#xff09;、允许缺货生产批量等核心模型&#xff0c;并通过商品库存管理、生产计划等实际案例&#xff0c;配合Matlab代码实现&#xff0c;展示模型求解过程。涵盖公式推导、参数优…...

MacBook Pro使用FFmpeg捕获摄像头与麦克风推流音视频

FFmpeg查看macos系统音视频设备列表 ffmpeg -f avfoundation -list_devices true -i "" 使用摄像头及麦克风同时推送音频及视频流: ffmpeg -f avfoundation -pixel_format yuyv422 -framerate 30 -i "0:1" -c:v libx264 -preset ultrafast -b:v 1000k -…...

linux 内核dumpstack定位使用举例说明

1,在 Linux 内核中&#xff0c;当你需要定位问题时&#xff0c;dump_stack() 函数是一个非常有用的工具&#xff0c;那么什么时候使用dump_stack&#xff0c;怎么使用dump_stack呢 通常使用的是前者&#xff09;函数通常在以下情况下被用来帮助定位问题&#xff1a; 调试内核代…...

360个人版和企业版的区别

功能方面 管理能力 个人版&#xff1a;主要用于单台设备的安全防护&#xff0c;只能在单独的电脑上进行安装使用&#xff0c;无集中管理和监控其他设备的功能。企业版&#xff1a;可批量管理大量电脑&#xff0c;如公司的十台、百台甚至千台电脑。管理员能通过管理控制台对所有…...

服务器迁移记录【腾讯云-->阿里云】

准备工作 压缩/root /usr/local/nginx /data三个目录到zip&#xff0c;并下载到本地。 zip root.zip /root zip nginx.zip /usr/local/nginx zip data.zip /datasz root.zip sz nginx.zip sz data.zip连接mysql数据库&#xff0c;导出数据库结构与数据到dzs_mysql.sql 安装l…...

APISIX Dashboard上的配置操作

文章目录 登录配置路由配置消费者创建后端服务项目配置上游再创建一个路由测试 登录 http://192.168.10.101:9000/user/login?redirect%2Fdashboard 根据docker 容器里的指定端口&#xff1a; 配置路由 通过apisix 的API管理接口来创建&#xff08;此路由&#xff0c;直接…...

【vue-echarts】——05.柱状图

文章目录 一、柱状图基本设置1.实现代码2.结果展示二、柱状图效果实现11.代码实现2.结果展示三、柱状图效果实现21.代码实现2.结果展示一、柱状图基本设置 柱状图:一种图表类型,因为构成是由一根一根类似柱子的数据条组合而成的坐标平面,所以命名为柱状 图。主要是用来反应对…...

计算机毕业设计SpringBoot+Vue.js人力资源管理系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

腾讯云扩容记录

腾讯云扩容&#xff1a; sudo yum install -y cloud-utils-growpart 安装扩容工具 sudo file -s /dev/vda1 有数据 sudo LC_ALLen_US.UTF-8 growpart /dev/vda 1 sudo resize2fs /dev/vda1 df -Th 完毕 以下是对执行的命令的详细解释以及背后的原理&#xff1a; 1. 安装 cloud…...

Cherry Studio + 火山引擎 构建个人AI智能知识库

&#x1f349;在信息化时代&#xff0c;个人知识库的构建对于提高工作效率、知识管理和信息提取尤为重要。尤其是当这些知识库能结合人工智能来智能化地整理、分类和管理数据时&#xff0c;效果更为显著。我最近尝试通过 Cherry Studio 和 火山引擎 来搭建个人智能知识库&#…...

RocketMQ启动教程

环境是ubuntu&#xff0c;建议ubuntu&#xff0c;因为有root用户权限够大&#xff0c;不像windows十分费劲&#xff0c;跑Docker总是遇到权限问题&#xff0c;但是ubuntu的话就很轻松了&#xff0c;整个流程非常顺利 文章目录 1.Docker安装NameServer2.安装broker3.Docker安装 …...

完美解锁便捷版!

视频文件的种类繁多&#xff0c;包括常见的格式如MP4、AVI、MOV、MKV等。随着视频技术的发展&#xff0c;新的编码格式如HEVC&#xff08;H.265&#xff09;和AV1也逐渐被广泛应用&#xff1b;视频文件通常会经过压缩&#xff0c;并且每种格式都有其独特的编码方式和特性&#…...

JAVA SE 包装类和泛型

文章目录 &#x1f4d5;1. 包装类✏️1.1 基本数据类型和对应的包装类✏️1.2 装箱和拆箱✏️1.3 自动装箱和自动拆箱 &#x1f4d5;2. 泛型✏️2.1 泛型的语法✏️2.2 泛型类的使用✏️2.3 裸类型(Raw Type)✏️2.4 擦除机制✏️2.5 泛型的上界✏️2.6 泛型方法✏️2.7 通配符…...