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

C#中chart绘制曲线

官网资料:Chart 类 (System.Windows.Forms.DataVisualization.Charting) | Microsoft Learn

类的 Chart 两个重要属性是 Series 和 ChartAreas 属性,这两个属性都是集合属性。 Series集合属性存储Series对象,这些对象用于存储要显示的数据以及该数据的属性。 ChartAreas集合属性存储ChartArea对象,这些对象主要用于使用一组轴绘制一个或多个图表。

图标中集合的作用

主要包含:Annotations(获取并设置存储图标注释的集合)、ChartAreas(获取用于存储 ChartAreaCollection 对象的只读 ChartArea 对象)、Legends(获取或设置LegendCollection, 其存储所有用于 Legend 控件的 Chart 对象)、Series(显示数据获取一个 SeriesCollection 对象,该对象包含 Series 对象)、Titles

遇到的bug

  • 将数据绑定在chart数据源上,更改DataCount,就更改了数据源。
int DataCount = 0;
chart1.Series[0].Points.DataBindY(DataPanel[DataCount]);
  • 给chart控件添加滚动条
private void ChartScrollbarStyle(){        chartAmend.ChartAreas[0].AxisX.ScrollBar.Enabled = true;chartAmend.ChartAreas[0].AxisX.ScaleView.Position = 1;chartAmend.ChartAreas[0].AxisX.ScaleView.Size = 300;chartAmend.ChartAreas[0].AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.SmallScroll;chartAmend.ChartAreas[0].AxisX.ScrollBar.ButtonColor = Color.Silver;chartAmend.ChartAreas[0].AxisX.ScrollBar.LineColor = Color.Black;chartAmend.ChartAreas[0].AxisX.ScrollBar.IsPositionedInside = false;
}
  • X轴显示为时间
    • 设置数据类型为Time
    •  数据添加时,X是时间
string time = DateTime.Now.ToString("HH:mm:ss:fff");        // 获取时间,yyyy-MM-dd HH:mm:ss:ffff
chart1.Series[x].Points.AddXY(time, data.Y);                // 添加显示数据
  • 界面中显示添加数据y值
    • 在添加数的函数值中设置显示属性为true
chart1.Series[0].IsValueShownAsLabel = true;
  • 绘制直线用于指引最大值,最小值等
// 如果interval不设置为0,则y轴间隔这个数值会有一条线,设置为0后则只有offset的一条线
ChartArea chartArea = chart.ChartAreas[0];
StripLine stripLine = new StripLine();
stripLine.Interval = 0; // 例如,你想在Y=50的位置画线
stripLine.IntervalOffset = 11;
stripLine.StripWidth = 0.15; // 设置宽度为很小的值以模拟直线  
stripLine.Text = name;
stripLine.BackColor = Color.Red; // 设置线的颜色  
chartArea.AxisY.StripLines.Add(stripLine);

应用完整代码

/// <summary>
/// 添加显示最大值、最小值、平均值
/// </summary>
/// <param name="chart"></param>
/// <param name="series"></param>
/// <param name="showMax"></param>
/// <param name="showMin"></param>
/// <param name="showAverage"></param>
void SetupChartStripLine(Chart chart, Series series, bool showMax = true, bool showMin = true, bool showAverage = true)
{if (chart == null || series == null)return;double maxValue = series.Points.FindMaxByValue().YValues[0];double minValue = series.Points.FindMinByValue().YValues[0];double sum = 0;foreach (var point in series.Points){sum += point.YValues[0];}double averageValue = sum / series.Points.Count;// 定义一个 Action<string> 委托,它引用了一个接受字符串参数的方法  Action<string, double> myAction = (name, value) =>{ChartArea chartArea = chart.ChartAreas[0];StripLine stripLine = new StripLine();stripLine.Interval = 0; // 例如,你想在Y=50的位置画线  stripLine.IntervalOffset = value;stripLine.StripWidth = 0.08; // 设置宽度为很小的值以模拟直线  stripLine.BackColor = Color.Red; // 设置线的颜色stripLine.Text = name;chartArea.AxisY.StripLines.Add(stripLine);};// 调用传入的 Action<string> 委托,并传入一个字符串参数  if (showMax)myAction?.Invoke("最大值:" + maxValue, maxValue); // 使用?.是为了避免在action为null时引发异常if (showMin)myAction?.Invoke("最小值:" + minValue, minValue);if (showAverage)myAction?.Invoke("平均值:" + averageValue, averageValue);
}

运行效果

相关文章:

C#中chart绘制曲线

官网资料&#xff1a;Chart 类 (System.Windows.Forms.DataVisualization.Charting) | Microsoft Learn 类的 Chart 两个重要属性是 Series 和 ChartAreas 属性&#xff0c;这两个属性都是集合属性。 Series集合属性存储Series对象&#xff0c;这些对象用于存储要显示的数据以…...

c++数据结构算法题讲解

那么从本期文章开始&#xff0c;会尽量带大家一起刷题 第一题 题目 关键词 思路 源代码 class MinStack { public: void push(int val) { _st.push(val); if(_minst.empty() || val < _minst.top()) { _minst.push(val); } } void pop() { if(_st.top() _minst.top()) {…...

间隙锁在其他数据库管理系统中的类似实现

间隙锁在其他数据库管理系统中的类似实现 一、引言 在 MySQL 中,间隙锁在可重复读事务隔离级别下起到了防止幻读的重要作用。那么在其他数据库管理系统中,是否也有类似的机制来实现类似的功能呢?了解其他数据库管理系统中与间隙锁类似的实现,可以帮助我们更好地理解不同数…...

OpenCV 与 YoloV3的结合使用:目标实时跟踪

目录 代码分析 1. YOLO 模型加载 2. 视频加载与初始化 3. 视频帧处理 4. 物体检测 5. 处理检测结果 6. 边界框和类别显示 7. 帧率&#xff08;FPS&#xff09;计算 8. 结果显示与退出 9. 资源释放 整体代码 效果展示 总结 代码分析 这段代码使用 YOLO&#xff08…...

Worse is Better

Worse is Better是UNIX的设计哲学&#xff0c;通俗来说&#xff0c;就是&#xff1a;保持接口与实现的简单性&#xff0c;比系统的任何其他属性&#xff0c;包括准确性、一致性和完整性&#xff0c;都来得更加重要 设计系统时&#xff0c;接口和实现的简单性是至关重要的。这种…...

Python Web 框架篇:Flask、Django、FastAPI介绍及其核心技术

Python Web 框架篇&#xff1a;Flask、Django、FastAPI介绍及其核心技术 目录 &#x1f40d; Flask Flask 核心概念&#xff08;路由、视图函数、模板渲染&#xff09;Flask Blueprint 模块化应用Flask 扩展&#xff08;Flask-SQLAlchemy、Flask-WTF、Flask-Migrate 等&#…...

【Qt网络编程基础】Tcp服务器和客户端(只支持一对一)

目录 一、编写思路 1、服务器 总体思路 详细思路 1. 构造函数 (Widget::Widget) 2. 启动监听 (Widget::on_btn_start_clicked) 3. 停止监听 (Widget::on_btn_cease_clicked) 4. 发送消息 (Widget::on_btn_info_clicked) 5. 接收消息 (Widget::receive_message) 6. 处…...

平台开发到落地详解:从食堂采购系统源码到可视化供应链管理数据大屏

随着数字化转型的加速&#xff0c;越来越多的企业和组织开始重视供应链的智能化与可视化管理。在食堂采购领域&#xff0c;供应链管理的复杂性与日俱增&#xff0c;而传统的手工操作往往效率低下、容易出错。因此&#xff0c;开发食堂采购系统并结合可视化数据大屏的解决方案&a…...

静态内部类

目录 一、什么是静态内部类二、静态内部类的意义 一、什么是静态内部类 在 Java 中&#xff0c;静态内部类&#xff08;也称为静态嵌套类&#xff09;是定义在一个类内部的类&#xff0c;但它与外部类没有关联&#xff0c;即它不持有外部类的引用。静态内部类可以访问外部类的…...

Vue+SpringBoot+数据库整体开发流程 1

本篇文章通过springboot整合mybatis-plus去实现后端对数据库的增删改查&#xff0c;以及响应给前端的url&#xff0c;让前端获得数据。 目录 一、简单搭建一个Vue项目 检查node.js版本 使用vue-cli创建空项目 Vue-cli工程中每个文件夹和文件的用处 二、Mysql数据库 创建数…...

百度Apollo打通与ROS的通信,扩展自动驾驶系统生态

技术文档&#xff5c;打通与ROS的通信&#xff0c;扩展自动驾驶系统生态_Apollo开发者社区 (baidu.com)...

Web3 项目安全手册

现如今针对 Web3 项目的攻击手法层出不穷&#xff0c;且项目之间的交互也越发复杂&#xff0c;在各个项目之间的交互经常会引入新的安全问题&#xff0c;而大部分 Web3 项目研发团队普遍缺少的一线的安全攻防经验&#xff0c;并且在进行 Web3 项目研发的时候&#xff0c;重点关…...

AI边缘计算在安防领域的智能化革新:赋能安防系统的智能化升级

随着人工智能&#xff08;AI&#xff09;和边缘计算技术的快速发展&#xff0c;两者在安防视频领域的应用日益广泛&#xff0c;为传统安防系统带来了革命性的变革。AI边缘计算技术通过将AI算法和模型部署在边缘设备上&#xff0c;实现了数据处理和智能决策的即时响应&#xff0…...

vscode配置C/C++环境(保姆级详细教程)

一. 引言 VSCode&#xff0c;全称为Visual Studio Code&#xff0c;是一款由微软开发的免费、开源的轻量级代码编辑器&#xff0c;它支持多种编程语言和平台&#xff0c;并提供丰富的扩展功能&#xff0c;让开发者能够更高效地编写代码。 大家能来搜用如何在VSCode配置C/C环境…...

MDK keil STM32 局部变量不能查看值,显示为not in scope

用MDK调试程序&#xff0c;查看变量时watch窗口总是和 一、方法1&#xff1a;优化级别改为Level 0 1 编译器把这个局部变量给优化掉了&#xff0c;并没有在内存中生成&#xff0c;把优化级别改为Level 0&#xff0c;重新编译。 Keil默认优化是等级3&#xff0c;最高优化&…...

表连接查询之两个left join与递归SQL

一、如下SQL1 SELECT i.*,su1.name as createName,su2.name as updateNameFROM information ileft join sys_user su1 on su1.idi.create_idleft join sys_user su2 on su2.idi.update_id 二、分析 1、SELECT i.*,su.name as createName,sua.name as updateName FROM informati…...

2024.9.10

打的模拟赛难度很大,T1就2200分? 其中转化成差分数组上的问题很巧妙 还用了将数分成2的多次方的形式,这种套路在最近的几场比赛和题中都见到过,值得归纳一下 T3是长链剖分和对顶堆维护,太难写了还没写出来 T4仍然是概率题,但是并没有见过类似的出题方式,其中关键是:最大独…...

22_图论中的高级数据结构

菜鸟&#xff1a;老鸟&#xff0c;我最近在处理一个网络节点数据的问题&#xff0c;发现代码运行得特别慢。你能帮我看看有什么优化的方法吗&#xff1f; 老鸟&#xff1a;当然可以。你处理的是图结构对吗&#xff1f;你是如何存储和操作这些节点的&#xff1f; 菜鸟&#xf…...

axure判断

在auxre中我们也可以实现判断的功能&#xff0c;当目标等于什么内容时则执行下方的功能。 一、判断输入框中是否有值 画布添加一个输入框、一个文本标签删除其中内容&#xff0c;添加一个按钮&#xff0c;输入框命名为【文本显示】文本标签命名为【提示】 给按钮新增一个交互…...

【开源大模型生态7】华为的盘古大模型

鹏程盘古模型是全球首个全开源2000亿参数的自回归中文预训练语言大模型&#xff0c;在知识问答、知识检索、知识推理、阅读理解等文本生成领域表现突出。 2070亿参数&#xff0c;64层。 这里注意几个概念。 参数&#xff08;Parameters&#xff09;&#xff1a; 参数是指构成模…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...