C#chart绘折线图动态添加数据
C#入门基础,实现chart控件动态添加数据
源程序https://download.csdn.net/download/qq_42237381/10742048
目录
一、效果示意
二、原理说明
三、代码参考
一、效果示意
最终程序运行效果如图
点击开始,将随机生成的两组数据添加进折线图里,chart1和chart2 只显示10个数,超过10个数将第一个传进来的数删掉
chart3是将chart1和chart2 的所有数据显示,两条不同的Y轴。
勾选框可以选择chart只显示其中一条线
二、原理说明
点击开始后,timer_tick定时器开始运行,生成两个随机数(速度和距离),添加进两个泛型数组和队列里,
泛型数组每生成新数据就添加进去,队列保持十个数,超过就将先进来的数删掉(FIFO),使表一显示距离队列,表二显示速度队列,表三显示距离和速度的泛型数组。
再添加checkedListBox勾选框,根据是否选中更改表三显示内容
关键点。使用timer定时器生成随机数,调用方法类
三、代码参考
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
using System.Windows.Forms.DataVisualization.Charting;namespace WindowsFormsApplication2
{public partial class Form1 : Form{private double dm = 0;private double vm = 0; //速度private double ss, st = 0; //时间间隔private List<double> VM = new List<double>(100);private List<double> DM = new List<double>(100);private Queue<double> Vm = new Queue<double>(100);private Queue<double> Dm = new Queue<double>(100);private bool Ready = false;private bool contrl = false;public Form1(){InitializeComponent();}//--------距离监测图表-----------////入口参数: 无 //// //private void DistanceData_Line(){this.chart1.ChartAreas.Clear();ChartArea chartarea = new ChartArea("距离监测");this.chart1.ChartAreas.Add(chartarea);chartarea.AxisX.MajorGrid.LineColor = System.Drawing.Color.Transparent;chartarea.AxisY.MajorGrid.LineColor = System.Drawing.Color.Black;chartarea.AxisX.ScrollBar.Enabled = false;//chartarea.AxisY.Minimum = 0;//chartarea.AxisY.Maximum = 10000;chartarea.AxisX.Interval = 5;chartarea.AxisX.MajorGrid.LineColor = System.Drawing.Color.Transparent;chartarea.AxisY.MajorGrid.LineColor = System.Drawing.Color.Black;//chartarea.AxisX.ScrollBar.Enabled = false;//指当前显示的是第几个 //chartarea.AxisX.ScaleView.Size = 10;//表头this.chart1.Titles.Clear();this.chart1.Titles.Add("距离监测");this.chart1.Titles[0].Text = "距离监测";this.chart1.Titles[0].ForeColor = Color.Red;this.chart1.Titles[0].Font = new System.Drawing.Font("Microsoft Sans serif", 12f);//定义存储和显示点的容器this.chart1.Series.Clear();Series series = new Series("距离");series.ChartType = SeriesChartType.Spline;series.ChartArea = "距离监测";series.Color = Color.Yellow;series.MarkerBorderWidth = 2;series.MarkerSize = 4;series.MarkerStyle = MarkerStyle.Diamond;series.ToolTip = "距离" + "#VAL \r\n #AXISLABEL";chart1.Series.Add(series);}//--------速度监测图表-----------////入口参数: 无 // private void VelocityData_Line(){//定义表区域this.chart2.ChartAreas.Clear();ChartArea chartarea = new ChartArea("速度监测");this.chart2.ChartAreas.Add(chartarea);chartarea.AxisX.MajorGrid.LineColor = System.Drawing.Color.Transparent;chartarea.AxisY.MajorGrid.LineColor = System.Drawing.Color.Black;chartarea.AxisX.ScrollBar.Enabled = false;//chartarea.AxisY.Minimum = 0;//chartarea.AxisY.Maximum = 100;chartarea.AxisX.Interval = 5;chartarea.AxisX.MajorGrid.LineColor = System.Drawing.Color.Transparent;chartarea.AxisY.MajorGrid.LineColor = System.Drawing.Color.Black;//chartarea.AxisX.ScrollBar.Enabled = false;指当前显示的是第几个 //chartarea.AxisX.ScaleView.Size = 10;//表头this.chart2.Titles.Clear();this.chart2.Titles.Add("速度监测");this.chart2.Titles[0].Text = "速度监测";this.chart2.Titles[0].ForeColor = Color.Red;this.chart2.Titles[0].Font = new System.Drawing.Font("Microsoft Sans serif", 12f);//定义存储和显示点的容器this.chart2.Series.Clear();Series series = new Series("速度");chart2.Series.Add(series);series.ChartArea = "速度监测";series.ChartType = SeriesChartType.Spline;series.MarkerBorderWidth = 2;series.MarkerSize = 4;series.MarkerStyle = MarkerStyle.Diamond;series.ToolTip = "速度" + "#VAL \r\n #AXISLABEL";}//--------飞行数据监测图表-----------////入口参数: 无 // private void FlyData_Line(){//定义表区域this.chart3.ChartAreas.Clear();ChartArea chartarea = new ChartArea("数据监测");this.chart3.ChartAreas.Add(chartarea);chartarea.AxisX.Maximum = VM.Count;chartarea.AxisX.MajorGrid.LineColor = System.Drawing.Color.Transparent;chartarea.AxisY.MajorGrid.LineColor = System.Drawing.Color.Black;chartarea.AxisX.ScrollBar.Enabled = false;//chartarea.AxisY.Minimum = 0;//chartarea.AxisY.Maximum = 100;chartarea.AxisX.Interval = 5;chartarea.AxisX.MajorGrid.LineColor = System.Drawing.Color.Transparent;chartarea.AxisY.MajorGrid.LineColor = System.Drawing.Color.Black;//chartarea.AxisX.ScrollBar.Enabled = false;指当前显示的是第几个 //chartarea.AxisX.ScaleView.Size = 10;//表头this.chart3.Titles.Clear();this.chart3.Titles.Add("数据监测");this.chart3.Titles[0].Text = "数据监测";this.chart3.Titles[0].ForeColor = Color.Red;this.chart3.Titles[0].Font = new System.Drawing.Font("Microsoft Sans serif", 12f);//定义存储和显示点的容器this.chart3.Series.Clear();for (int i = 0; i < 2; i++){Series series = new Series(DATATYPE[i]);chart3.Series.Add(series);series.ChartArea = "数据监测";series.ChartType = SeriesChartType.Spline;series.MarkerBorderWidth = 2;series.MarkerSize = 4;series.MarkerStyle = MarkerStyle.Diamond;series.ToolTip = DATATYPE[i] + "#VAL \r\n #AXISLABEL";}this.chart3.Series[0].YAxisType = AxisType.Primary;this.chart3.Series[1].YAxisType = AxisType.Secondary;}private static string[] DATATYPE = { "速度", "距离" };//--------飞行轨迹数据导入图表------------------------- ////入口参数: ////距离: dM ////速度: vM //private void ChartData(){if (Vm.Count > 10)//当数据大于十,删除第一位数{Vm.Dequeue();Dm.Dequeue();}if (Ready == true){VM.Add(vm);DM.Add(dm);Vm.Enqueue(vm);Dm.Enqueue(dm);}for (int i = 0; i < Vm.Count; i++){this.chart1.Series[0].Points.AddY(Vm.ElementAt(i));this.chart2.Series[0].Points.AddY(Dm.ElementAt(i));}for (int i = 0; i < VM.Count; i++){//指示速度是否显示if (checkedListBox1.GetItemChecked(0) == true){this.chart3.Series[0].Points.AddY(VM.ElementAt(i));}if (checkedListBox1.GetItemChecked(0) == false){this.chart3.Series[0].Points.Clear();}//指示距离是否显示if (checkedListBox1.GetItemChecked(1) == true){this.chart3.Series[1].Points.AddY(DM.ElementAt(i));}if (checkedListBox1.GetItemChecked(1) == false){this.chart3.Series[1].Points.Clear();}}}private void button1_Click(object sender, EventArgs e){if (contrl == false){Ready = true;button1.Text = "停止";contrl = true;}else {Ready = false;button1.Text = "开始";contrl = true;}}private void Form1_Load(object sender, EventArgs e){for (int i = 0; i < checkedListBox1.Items.Count; i++){checkedListBox1.SetItemChecked(i, true); }timer1.Enabled = true;}private void timer1_Tick(object sender, EventArgs e){Random rd = new Random();vm = rd.Next(0, 100);dm = rd.Next(0, 500);FlyData_Line();VelocityData_Line();DistanceData_Line();ChartData();}}
}
C#chart绘折线图动态添加数据相关推荐
- Echarts—折线图动态获取数据示例(java版本)
最终效果 饼状图:饼状图示例,使劲点我!!! 柱状图:柱状图实例,使劲点我!!! 步骤:准备一个dom-->获取dom节点-->初始化-->绘制图表-->渲染数据 html代码 ...
- Echarts使用及动态加载图表数据 折线图X轴数据动态加载
Echarts简介 echarts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,来自百度...我想应该够简洁了 使用Echarts 目前,就官网的文 ...
- chart.js ajax 折线图,如何在ChartJs 的折线图中显示数据值或索引标签
如何在Chartjs的折线图中显示数据值或索引值,如图所示: 图例.PNG 简介 Chart.js是一款不依赖任何外部js库的图标插件,具体的使用方法可查看Chart.js官网. 需求 Chart.j ...
- echart 折线从左到右动画效果_echarts多条折线图动态分层的实现方法
1.关于Echarts 大家可以到这个网址看一下,还是比较详细的. 这个功能还是很强大的,对于喜欢做数据统计来说是美味的. 2.echarts多条折线图动态分层 var xData = param.x ...
- android仿微信发布动态功能,Android GridView扩展仿微信微博发图动态添加删除图片功能.pdf...
Android GridView扩扩展展仿仿微微信信微微博博发发图图动动态态添添加加删删除除图图片片功功能能 这篇文章主要为大家详细介绍了Android GridView扩展仿微信微博发图动态添加删除 ...
- Python数据可视化 Matplotlib详解(一) —— 折线图与时序数据绘制
目录 本小节内容 基础代码 实例讲解 如何多图绘制 多行多列的情况 多行单列的情况 Matplotlib 绘制时序数据 多时序变量绘图 如何给数据添加注释 Reference 本小节内容 今天这一小节 ...
- jsp ajax动态添加数据,jquery Ajax实现Select动态添加数据
jquery Ajax实现Select动态添加数据,具体内容如下 1.背景 最近在工作中,遇到了一个关于select的问题.一般情况下,select下拉框中的数据都是固定的或者直接在jsp中读取列表值 ...
- Python使用matplotlib函数subplot可视化多个不同颜色的折线图、自定义数据点的形状、自定义折线图的颜色
Python使用matplotlib函数subplot可视化多个不同颜色的折线图.自定义数据点的形状.自定义折线图的颜色 目录
- python使用matplotlib可视化堆积的折线图、使用stackplot函数可视化堆积的折线图、不同数据在垂直方向堆叠
python使用matplotlib可视化堆积的折线图.使用stackplot函数可视化堆积的折线图.不同数据在垂直方向堆叠 目录
最新文章
- Leetcode 42.接雨水 (每日一题 20210629)
- Struts2里的Action返回Json数据
- FlexChart: 针对AJAX的Flash绘图应用
- 两种解决IE6不支持固定定位的方法
- 【操作系统】高速缓存和缓冲区
- centos7 docker安装_教你如何在 CentOS 7 下 yum 方式安装 Docker 环境
- 解决办法:nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-xenial)
- 房屋租赁管理系统(Java毕业设计-Springboot)
- 内存碎片产生原因及终极解决办法
- UE4_Shader Compile 停在某一帧或者新建材质出现卡死
- 一键快速设置图层lisp程序_CAD快速切换图层LISP代码问题
- java2048移动算法_2048游戏通关算法
- python小数点后任意位_Python计算开方、立方、圆周率,精确到小数点后任意位的方法...
- linux奶瓶U盘使用方法,如何用U盘启动盘奶瓶解除无线WPA加密
- 关于前端接口报错500原因
- hdu 1789题解
- Postman--使用
- 学习笔记--浅谈LoRa与LoRaWAN
- 脱离文档流的三种方法
- http缓存和浏览器缓存
热门文章
- 特斯拉 开源_开源与癌症作斗争,特斯拉采用Coreboot,Uber和Lyft发行开源机器学习...
- 不可不知的潮流文化、新词汇, 00后聊天词汇
- zypper in 安装下载不了_Color Wheel下载与Color Wheel如何配搭衣服颜色?
- C#连接mysql数据库实现登陆注册界面【小白教程】
- linux之net子系统
- 20170421康拓普面试题
- JAVA基于NIO客户端对客户端简单聊天DEMO(服务器转发消息)
- 易盾php,GitHub - yidun/antispam-php-demo: 易盾反垃圾php演示
- java secretkey用法_Java SecretKeyFactory.generateSecret方法代码示例
- 卓越电脑定时关机软件