我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何使用C#实现运行状态堆叠柱状图

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何使用C#实现运行状态堆叠柱状图

小编给大家分享一下如何使用C#实现运行状态堆叠柱状图,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

具体内容如下

需求通过柱状图显示设备运行时间停止时间,稼动率等
通过数据库查询记录,按小时显示显示目标数据。

界面设计

添加用户控件(窗体)

如何使用C#实现运行状态堆叠柱状图

代码如下

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Windows.Forms;using System.Windows.Forms.DataVisualization.Charting;namespace TestRunChart{    public partial class SysTimeBarChart : UserControl    {        public List<SysTimeCnt> ListAllTime=new List<SysTimeCnt>();        public SysTimeBarChart()        {            InitializeComponent();            this.chart1.Series.Clear();                    }            public DateTime timeStart        {             get{                DateTime Time1 = this.dateTimePickerLast.Value;                DateTime Time2 = this.dateTimePickerStart.Value;                return Time1 >= Time2? Time2 : Time1;            }           }        public DateTime timeEnd        {            get            {                DateTime Time1 = this.dateTimePickerLast.Value;                DateTime Time2 = this.dateTimePickerStart.Value;                return Time1 > Time2 ? Time1 : Time2;            }        }        public int Hours        {            get            {                TimeSpan ts1 = new TimeSpan(timeStart.Ticks);                TimeSpan ts2 = new TimeSpan(timeEnd.Ticks);                TimeSpan ts = ts1.Subtract(ts2).Duration();                return ts.Hours;            }        }        public int Days        {            get            {                TimeSpan ts1 = new TimeSpan(timeStart.Ticks);                TimeSpan ts2 = new TimeSpan(timeEnd.Ticks);                TimeSpan ts = ts1.Subtract(ts2).Duration();                return ts.Days;            }        }        private void btn_GetChart_Click(object sender, EventArgs e)        {            // 判断时间设置            if (Hours == 0)                MessageBox.Show("时间设置间隔小于1小时,请重新设置时间", "警告", MessageBoxButtons.OK);            else if(Days != 0)                MessageBox.Show("时间间隔大于24小时,请重新设置时间", "警告", MessageBoxButtons.OK);            else                Plot();        }        private void btn_clear_Click(object sender, EventArgs e)        {            this.chart1.Series.Clear();                             this.chart1.Legends.Clear();            this.chart1.ChartAreas.Clear();            ListAllTime.Clear();        }        /// <summary>        ///  图表绘制        /// </summary>        private void Plot()        {            this.chart1.Series.Clear();                  // 清空图表            this.chart1.Legends.Clear();            this.chart1.ChartAreas.Clear();            if (ListAllTime == null || ListAllTime.Count == 0)            { MessageBox.Show("数据为空"); return; }            // 辅助设置            AxiesSet();            LegendSet();            // 表格绘制            if (this.rbt_runTime.Checked)                ChartPlot(TimeType.RunTime);            else if (this.rbt_StopTime.Checked)                ChartPlot(TimeType.StopTime);            else if (this.rbt_almtime.Checked)                ChartPlot(TimeType.AlmTime);            else if (this.rbt_runrate.Checked)                ChartPlot(TimeType.RunRate);            else            {                ChartPlot(TimeType.RunTime);                ChartPlot(TimeType.StopTime);                ChartPlot(TimeType.AlmTime);                ChartPlot(TimeType.RunRate);            }        }        enum TimeType        {            RunTime,            AlmTime,            StopTime,            RunRate        }        /// <summary>        ///  数据绘制        /// </summary>        /// <param name="seriesName">数据名字</param>        /// <param name="data">数据</param>        /// <param name="chartType">chart类型</param>        /// <param name="isPrimary">是否为主轴数据</param>        private void ChartPlot(TimeType type)        {            string seriesName = "";            SeriesChartType chartType = SeriesChartType.StackedColumn;            bool isPrimary = true;            switch (type)            {                case TimeType.RunTime:                    seriesName = "运行时间"; break;                case TimeType.StopTime:                    seriesName = "待机时间"; break;                case TimeType.AlmTime:                    seriesName = "报警时间"; break;                case TimeType.RunRate:                    seriesName = "稼动率";                    chartType = SeriesChartType.Line;                    isPrimary = false;//非主轴,右边轴                    break;                default: break;            }            Series series = this.chart1.Series.Add(seriesName);            series.ChartType = chartType;       // 图表类型            series.YAxisType = isPrimary ? AxisType.Primary : AxisType.Secondary;            series.BorderWidth = 2;            series.Label = isPrimary ? "#VAL" : "#VAL{P}";            int i = 0;            foreach (var m in ListAllTime)            {                double mvalue = 0;                switch (type)                {                    case TimeType.RunTime:                        mvalue = m.RunTime; break;                    case TimeType.StopTime:                        mvalue = m.StopTime; break;                    case TimeType.AlmTime:                        mvalue = m.AlmTime; break;                    case TimeType.RunRate:                        mvalue = m.RunRate; break;                    default: break;                }                series.Points.AddXY(i, mvalue);                i++;            }        }        /// <summary>        /// 坐标轴设置        /// </summary>        private void AxiesSet()        {            ChartArea chartAreas = this.chart1.ChartAreas.Add("ChartAreas");            chartAreas.AxisX.MajorGrid.Enabled = false;             // 坐标轴            chartAreas.AxisY.MajorGrid.Enabled = false;             // Y轴主轴            chartAreas.AxisY.Maximum = 60;            chartAreas.AxisY2.MajorGrid.Enabled = false;            // Y轴次轴            chartAreas.AxisY2.Enabled = AxisEnabled.True;            chartAreas.AxisY2.LabelStyle.Format = "0%";            chartAreas.AxisY2.Maximum = 1;        }        /// <summary>        ///  标签设置        /// </summary>        private void LegendSet()        {            Legend legend = this.chart1.Legends.Add("Legend");            legend.Alignment = StringAlignment.Center;              // 标签居中            legend.Docking = Docking.Top;                           //     上方        }        /// <summary>        /// 初始化数据列,默认全部停止时间        /// </summary>        /// <param name="brandom"></param>        /// <returns></returns>        public bool InitDataList(bool brandom=false)        {            if (Days != 0)            { MessageBox.Show("时间设置异常"); return false; }            var startTime = timeStart;            ListAllTime.Clear();            Random rd = new Random();            for (int i = 0; i <= Hours; i++)            {                var num = rd.Next(0, 59);                SysTimeCnt mCnt = new SysTimeCnt()                {                    _InSertTime = string.Format("{0:yyyy-MM-dd-HH-mm}", startTime),                    RunTime = brandom? num:0,                    AlmTime = brandom ? rd.Next(0, 60 - num):0                };                ListAllTime.Add(mCnt);                startTime.AddHours(1);            }            return true;        }    }    public class SysTimeCnt    {        public string _InSertTime;        public string InSertTime => _InSertTime;        public void UpdateInSertTime()        {            _InSertTime = string.Format("{0:yyyy-MM-dd-HH-mm}", DateTime.Now);        }        public double RunTime;        public double AlmTime;        public double StopTime        {            get { return 60 - RunTime - AlmTime; }        }        public double RunRate        {            get { return Math.Round(Convert.ToDouble(this.RunTime / 60), 2); }        }    }}

主窗体代码

 public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void btn_AddData_Click(object sender, EventArgs e)        {            var bSucessd = sysTimeBarChart1.InitDataList(true);            if (bSucessd)                MessageBox.Show("完成");        }    }

显示效果

如何使用C#实现运行状态堆叠柱状图

以上是“如何使用C#实现运行状态堆叠柱状图”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何使用C#实现运行状态堆叠柱状图

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用C#实现运行状态堆叠柱状图

小编给大家分享一下如何使用C#实现运行状态堆叠柱状图,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下需求通过柱状图显示设备运行时间停止时间,稼动率等通过
2023-06-29

如何在Python中使用ECharts绘制堆叠柱状图

在数据可视化领域,堆叠柱状图是一种常见的可视化方式。它将多个数据系列绘制成一个条形,每个条形由多个子项组成,每个子项对应一个数据系列,在同一坐标系下进行展示。这种图表可以用于比较不同类别或数据系列的总大小、每个类别或数据系列的组成比例等。在
如何在Python中使用ECharts绘制堆叠柱状图
2023-12-17

echarts柱状堆叠图实现示例(图例和x轴都是动态的)

一些柱形图在数据量比较多的时候,横向排列受到挤压,导致柱形图,变的非常细,影响整体的效果,下面这篇文章主要给大家介绍了关于echarts柱状堆叠图(图例和x轴都是动态的)的相关资料,需要的朋友可以参考下
2023-05-14

C#如何使用GDI+实现饼状图

这篇文章主要介绍“C#如何使用GDI+实现饼状图”,在日常操作中,相信很多人在C#如何使用GDI+实现饼状图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#如何使用GDI+实现饼状图”的疑惑有所帮助!接下来
2023-06-17

如何让云服务器一直运行状态正常使用

要让云服务器一直运行状态正常,您需要确保它能够持续提供服务。以下是一些建议,可以确保云服务器的状态能够得到持续维护和管理:定期进行备份:定期备份重要数据,以避免数据丢失或损坏。设置高可用性:确保云服务器能够提供可靠的高可用性,以避免数据受到损坏。监控服务器:监控云服务器的运行状态,例如CPU、内存、磁盘使用率等。升级和更新硬件:定期升级和更新云服务器的硬件,确保它在不断变化的环境中能够
2023-10-26

如何使用Python监控MySQL数据库的运行状态?(Python环境下如何实时监控MySQL数据库的运行状况?)

本篇教程介绍了使用Python监控MySQL数据库运行状态的详细方法。介绍了MySQLdb、pymysql和MySQLConnector/Python三个库,并提供了代码示例来展示如何使用它们执行查询并获取监控指标。此外,还介绍了一些通用监控指标,以及Grafana、Prometheus和Zabbix等其他监控工具。通过使用这些工具和技术,您可以有效地监控MySQL数据库,识别潜在问题并采取措施以确保其正常运行。
如何使用Python监控MySQL数据库的运行状态?(Python环境下如何实时监控MySQL数据库的运行状况?)
2024-04-02

如何使用Redis实现用户登录状态管理

《如何使用Redis实现用户登录状态管理,需要具体代码示例》  Redis是一种开源的内存数据库,它被广泛应用于缓存、会话管理和消息队列等领域。在Web开发中,用户登录状态管理是一个非常重要的功能,而Redis正是一个很好的选择来实现这一功
如何使用Redis实现用户登录状态管理
2023-11-09

如何使用纯CSS实现饼状Loading等待图效果

这篇文章将为大家详细讲解有关如何使用纯CSS实现饼状Loading等待图效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。效果图:原理这个东西分为两部分:外圈和内圆。颜色这东西都自定义啦,不过我画的的圈圈
2023-06-08

Android开发中使用token如何实现维持登陆状态

Android开发中使用token如何实现维持登陆状态?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。什么是tokentoken(令牌)是一串唯一的字符串,通常由
2023-05-31

如何使用JDK自带的jmap和jhat监控处于运行状态的Java进程

本篇内容主要讲解“如何使用JDK自带的jmap和jhat监控处于运行状态的Java进程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用JDK自带的jmap和jhat监控处于运行状态的Jav
2023-06-02

Python设计模式中如何使用状态模式实现编辑功能

Python设计模式中如何使用状态模式实现编辑功能,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。功能介绍新增对象选择,连接线编辑功能。新增对象选择状态表示,连接
2023-06-19

如何实现Linux服务器硬件运行状态及故障邮件提醒的监控脚本

小编给大家分享一下如何实现Linux服务器硬件运行状态及故障邮件提醒的监控脚本,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!监控硬件运行状况shell 监控cpu
2023-06-09

如何实现一个在vbs运行命令行工具后让命令窗口保持打开状态的脚本

这篇文章给大家分享的是有关如何实现一个在vbs运行命令行工具后让命令窗口保持打开状态的脚本的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。问: 如何在运行像 Ping 或 Ipconfig 这样的工具后让命令窗口保
2023-06-08

如何使用批处理实现计算机/网络设备状态监测脚本

这篇文章主要为大家展示了“如何使用批处理实现计算机/网络设备状态监测脚本 ”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用批处理实现计算机/网络设备状态监测脚本 ”这篇文章吧。以前自己写的
2023-06-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录