时间:2021-05-20
此Demo是采用VS自带的Chart图表控件,制作实时动态显示的折线图,和波形图。本文仅供学习分享使用,如有不足之处,还请指正。
涉及知识点:
Chart 控件,功能强大,可以绘制柱状图,折线图,波形图,饼状图,大大简化了对图的开发与定制。
Chart控件的相关概念:
Queue集合,表示先进先出的集合。
主要有两个方法:
Timer ,定时器,定时之行相应的功能,更新数据,刷新图表。
-----------------------------------------------------------------------------------------------------------
效果图
如下【先点击初始化按钮,再点击开始按钮】:
折线图【折线图,是取[0,100]之间的随即数进行填充】:
波形图【波形图,是取正玄值,并放大50倍,然后上移50】
核心代码
代码如下:
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.Windows.Forms.DataVisualization.Charting;namespace WindowsFormsApplication1{ public partial class RealChart : Form { private Queue<double> dataQueue = new Queue<double>(100); private int curValue = 0; private int num = 5;//每次删除增加几个点 public RealChart() { InitializeComponent(); } /// <summary> /// 初始化事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnInit_Click(object sender, EventArgs e) { InitChart(); } /// <summary> /// 开始事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnStart_Click(object sender, EventArgs e) { this.timer1.Start(); } /// <summary> /// 停止事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnStop_Click(object sender, EventArgs e) { this.timer1.Stop(); } /// <summary> /// 定时器事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void timer1_Tick(object sender, EventArgs e) { UpdateQueueValue(); this.chart1.Series[0].Points.Clear(); for(int i=0;i<dataQueue.Count;i++){ this.chart1.Series[0].Points.AddXY((i+1), dataQueue.ElementAt(i)); } } /// <summary> /// 初始化图表 /// </summary> private void InitChart() { //定义图表区域 this.chart1.ChartAreas.Clear(); ChartArea chartArea1 = new ChartArea("C1"); this.chart1.ChartAreas.Add(chartArea1); //定义存储和显示点的容器 this.chart1.Series.Clear(); Series series1 = new Series("S1"); series1.ChartArea = "C1"; this.chart1.Series.Add(series1); //设置图表显示样式 this.chart1.ChartAreas[0].AxisY.Minimum = 0; this.chart1.ChartAreas[0].AxisY.Maximum =100; this.chart1.ChartAreas[0].AxisX.Interval = 5; this.chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = System.Drawing.Color.Silver; this.chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = System.Drawing.Color.Silver; //设置标题 this.chart1.Titles.Clear(); this.chart1.Titles.Add("S01"); this.chart1.Titles[0].Text = "XXX显示"; this.chart1.Titles[0].ForeColor = Color.RoyalBlue; this.chart1.Titles[0].Font = new System.Drawing.Font("Microsoft Sans Serif", 12F); //设置图表显示样式 this.chart1.Series[0].Color = Color.Red; if (rb1.Checked) { this.chart1.Titles[0].Text =string.Format( "XXX {0} 显示",rb1.Text); this.chart1.Series[0].ChartType = SeriesChartType.Line; } if (rb2.Checked) { this.chart1.Titles[0].Text = string.Format("XXX {0} 显示", rb2.Text); this.chart1.Series[0].ChartType = SeriesChartType.Spline; } this.chart1.Series[0].Points.Clear(); } //更新队列中的值 private void UpdateQueueValue() { if (dataQueue.Count > 100) { //先出列 for (int i = 0; i < num; i++) { dataQueue.Dequeue(); } } if (rb1.Checked) { Random r = new Random(); for (int i = 0; i < num; i++) { dataQueue.Enqueue(r.Next(0, 100)); } } if (rb2.Checked) { for (int i = 0; i < num; i++) { //对curValue只取[0,360]之间的值 curValue = curValue % 360; //对得到的正玄值,放大50倍,并上移50 dataQueue.Enqueue((50*Math.Sin(curValue*Math.PI / 180))+50); curValue=curValue+10; } } } }}备注
关于定时器Timer【微软自带的控件】:
说明:表示在相同的时间间隔,引发用户自定义的事情 。实现用户需要的功能。本例中是用来定时更新队列中的数据,并刷新图表。
常用说明:
由于需要源码的比较多,故将源码下载链接放于此处,请自行下载,谢谢
源码下载
以上就是C# 绘制实时折线图,波形图的详细内容,更多关于C# 折线图,波形图的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
之前公司有个绘制实时盈利率折线图的需求,实现的还不错,今天来分享下vue+echarts实现动态折线图的方法。实现代码importechartsfrom'ech
WPS绘制折线图的方法如下: 1、打开要处理的工作表格。 2、选择要做成折线图的数据。 3、点击插入图表。 4、选择折线图。 5、点击确定,折线图即显
柱状图、柱状图、饼图、面积图、雷达图。具体介绍如下:柱状图 折线图是排列在工作表的列或行中的数据可以绘制到折线。折线图可以显示随时间(根据常用比例设置)而变化
EXCEL折线图和柱形图可以说是图表中最长用到的,但正常情况下大家做的折线图都是比较中规中矩的,下面来给大家介绍几种折线图的美化方法,让你的折线图不再乏味!软件
EXCEL折线图和柱形图可以说是图表中最长用到的,但正常情况下大家做的折线图都是比较中规中矩的,下面来给大家介绍几种折线图的美化方法,让你的折线图不再乏味!