C# chart画折线
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、版本一(DataGridView 和 Chart)
- 1.小目标
- 2.过程实现
- 3.结果
- 二、版本二(Combobox 和 Chart)
- 1.小目标
- 2.过程实现
- 3.浅贴一下效果
- 算是完结了吧 ,有问题一起交流鸭
一、版本一(DataGridView 和 Chart)
1.小目标
控件绑定Sql Sever 数据库
DataGridView列出数据,Chart画折线
2.过程实现
chart的初始设置(个人习惯)
1.图列关掉(属性>Legends>(Enabled)=False>确定)
2.去网格X轴(属性>ChartAreas>Axes>X axis>MajorGrid>Enanled=False)
3.去网格Y轴(X轴设置好,直接按Y(Value) axis>MajorGrid>Enanled=False>确定)
4.柱状图变为折线(属性>Series>ChartType>Line>确定)
5.铺满上半页面(属性>Dock>top)
DataGridView的初始设置(个人习惯)
1.放左边方便查看数据(属性>Dock>Left)
2.数据设置(编辑列,按图顺序添加列名和绑定数据,完成后确定)
添加两个列名
数据绑定
- 具体代码(在窗体加载事件里写)
1.创建SqlHelper类
public static class SqlHelper{ public static DataTable GetData(string sql){DataTable dataTable = new DataTable();string connString = "Data Source=.;Initial Catalog = Line;User ID = sa;Password=abcdef";SqlConnection conn = new SqlConnection(connString);SqlCommand cmd = new SqlCommand(sql, conn);cmd.Parameters.Clear();conn.Open();SqlDataAdapter da = new SqlDataAdapter();da.SelectCommand = cmd;conn.Close();da.Fill(dataTable);return dataTable;}}
2.窗体代码
private void Form1_Load(object sender, EventArgs e){string Sql = "select numX,numY from BrokenLine30";//DataGridView绑定DataTable dt = SqlHelper.GetData(Sql);dataGridView1.DataSource = dt;//画图for(int i =0; i<dt.Rows.Count;i++){chart1.Series[0].Points.AddXY(i+1,dt.Rows[i][1]);}//设置Y轴范围(属性>ChartArea>Axes>Y(Value)axis>Maximum和Minimun里也能设置)chart1.ChartAreas[0].AxisY.Minimum = 27.5;chart1.ChartAreas[0].AxisY.Maximum = 31.5;//粗细(属性中也能设置)chart1.Series[0].BorderWidth = 3;}
3.结果
- 读取到了数据库中的数据,显示在表格中
- 下一步是画出折线
- 做一下改善,将线变粗,设置了Y轴上下限
- X轴还可以在属性中做更一步设置,让折线从1开始
- 空白部分还能发挥空间,添加一些标签和文本,做些数据统计
二、版本二(Combobox 和 Chart)
1.小目标
- Combobox选择不同的值,Chart显示相对应的折线
- 在Chart中显示具体数据、Y轴上下限随数值变化,添加三条辅助线,分别代表数据中的最大值,最小值和标准值
2.过程实现
- 界面设置
与前一部分设置相同,主要是只想呈现X轴和Y轴
combobox属性中(Name)改为cbbMidLine
放一些标签和文本,分别改(Name)为textAvg,textMAX,textMIN,textCount
- SqlHelper类
public static class SqlHelper{public static DataTable GetDataTable(string sql){DataTable dataTable = new DataTable();string connString = "Data Source=.;Initial Catalog = Line;User ID = sa;Password=abcdef";SqlConnection conn = new SqlConnection(connString);SqlCommand cmd = new SqlCommand(sql, conn);cmd.Parameters.Clear();conn.Open();SqlDataAdapter da = new SqlDataAdapter();da.SelectCommand = cmd;conn.Close();da.Fill(dataTable);return dataTable;}public static double Count(string sql){double result = 0;string connString = "Data Source=.;Initial Catalog = Line;User ID = sa;Password=abcdef";SqlConnection conn = new SqlConnection(connString);SqlCommand cmd = new SqlCommand(sql, conn);cmd.Parameters.Clear();conn.Open();result = Convert.ToDouble(cmd.ExecuteScalar());return result;}}
- Line类
public static class Line{public static StripLine SetLine(string sql,out double Line){string connString = "Data Source=DESKTOP-JQOODRR;Initial Catalog = Line;User ID = sa;Password=abcdef";SqlConnection conn = new SqlConnection(connString);SqlCommand cmd = new SqlCommand(sql, conn);cmd.Parameters.Clear();conn.Open();Line= Convert.ToDouble(cmd.ExecuteScalar());conn .Close();StripLine stripLine = new StripLine();stripLine.Interval = 0;//偏移stripLine.IntervalOffset = Line;//刻度stripLine.StripWidth = 0.02;stripLine.BackColor =Color.DarkGreen;stripLine.Text = String.Format("{0:F}", Line);return stripLine;}public static StripLine DrawMid(double a){StripLine stripMid=new StripLine();stripMid.Interval = 0;//偏移stripMid.StripWidth = 0.03;stripMid.IntervalOffset = a;stripMid.BackColor = Color.Orange;stripMid.Text = string.Format("标准值:{0:F}",a);return stripMid;}}
- 窗体代码
private void Form1_Load(object sender, EventArgs e){string sqlS = "select numX,numY from BrokenLine30";DataTable dt = SqlHelper.GetDataTable(sqlS);//dgvLine.DataSource = dt;//combobox数据绑定string sqlM = "select * from MidLLine";DataTable dtM = SqlHelper.GetDataTable(sqlM);cbbMidLine.DataSource = dtM;cbbMidLine.ValueMember = "MidLine";cbbMidLine.DisplayMember = "MidLine";}private void cbbMidLine_SelectedIndexChanged(object sender, EventArgs e){double Max,Min,Mid;StripLine stripMax , stripMin, stripMid;if (cbbMidLine.SelectedIndex == 0){string sqlA = "select AVG(numY) from BrokenLine10 ";string sqlMax = "select MAX(numY) from BrokenLine10";string sqlMin = "select MIN(numY) from BrokenLine10";string sqlCount = "select count(1) from BrokenLine10";stripMax = Line.SetLine(sqlMax,0.02,Color.DarkGreen,out Max);textMAX.Text = Max.ToString();stripMin= Line.SetLine(sqlMin,0.02,Color.DarkGreen,out Min);textMIN.Text = Min.ToString();stripMid=Line.SetLine(sqlA,0.03,Color.Orange,out Mid);texAvg.Text = Mid.ToString("0.00");double Count=SqlHelper.Count(sqlCount);textCount.Text = Count.ToString();stripMid.Text = string.Format("标准值:{0:F}", 10);//展示文本stripMid.IntervalOffset = 10;string sqlS = "select numX,numY from BrokenLine10";DataTable dt = SqlHelper.GetDataTable(sqlS);chart1.DataSource = dt;for (int i = 0; i < dt.Columns.Count; i++){chart1.Series[0].YValueMembers = dt.Columns[i].ColumnName;}chart1.ChartAreas[0].AxisY.StripLines.Add(stripMax);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMin);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMid);this.chart1.ChartAreas[0].AxisY.Minimum = Min-0.05;this.chart1.ChartAreas[0].AxisY.Maximum = Max+0.05;}if (cbbMidLine.SelectedIndex == 1){string sqlA = "select AVG(numY) from BrokenLine20 ";string sqlMax = "select MAX(numY) from BrokenLine20";string sqlMin = "select MIN(numY) from BrokenLine20";string sqlCount = "select count(1) from BrokenLine20";stripMax = Line.SetLine(sqlMax, 0.02, Color.DarkGreen, out Max);textMAX.Text = Max.ToString();stripMin = Line.SetLine(sqlMin, 0.02, Color.DarkGreen,out Min);textMIN.Text = Min.ToString();stripMid=Line.SetLine(sqlA, 0.03, Color.Orange, out Mid); texAvg.Text = Mid.ToString("0.00");double Count = SqlHelper.Count(sqlCount);textCount.Text = Count.ToString();stripMid.Text = string.Format("标准值:{0:F}", 20);stripMid.IntervalOffset = 20;string sqlS = "select numX,numY from BrokenLine20";DataTable dt = SqlHelper.GetDataTable(sqlS);chart1.DataSource = dt;for (int i = 0; i < dt.Columns.Count; i++){chart1.Series[0].YValueMembers = dt.Columns[i].ColumnName;}chart1.ChartAreas[0].AxisY.StripLines.Add(stripMax);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMin);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMid);this.chart1.ChartAreas[0].AxisY.Minimum = Min-0.05;this.chart1.ChartAreas[0].AxisY.Maximum = Max+0.05;}if (cbbMidLine.SelectedIndex == 2){string sqlA = "select AVG(numY) from BrokenLine30 ";string sqlMax = "select MAX(numY) from BrokenLine30";string sqlMin = "select MIN(numY) from BrokenLine30";string sqlCount = "select count(1) from BrokenLine30";stripMax = Line.SetLine(sqlMax, 0.02, Color.DarkGreen, out Max);textMAX.Text = Max.ToString();stripMin = Line.SetLine(sqlMin, 0.02, Color.DarkGreen, out Min);textMIN.Text = Min.ToString();stripMid = Line.SetLine(sqlA, 0.03, Color.Orange, out Mid);texAvg.Text = Mid.ToString("0.00");double Count = SqlHelper.Count(sqlCount);textCount.Text = Count.ToString();stripMid.Text = string.Format("标准值:{0:F}", 30);stripMid.IntervalOffset = 30;string sqlS = "select numX,numY from BrokenLine30";DataTable dt = SqlHelper.GetDataTable(sqlS);chart1.DataSource = dt;for (int i = 0; i < dt.Columns.Count; i++){chart1.Series[0].YValueMembers = dt.Columns[i].ColumnName;}chart1.ChartAreas[0].AxisY.StripLines.Add(stripMax);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMin);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMid);this.chart1.ChartAreas[0].AxisY.Minimum = Min-0.05;this.chart1.ChartAreas[0].AxisY.Maximum = Max+0.05;}if (cbbMidLine.SelectedIndex == 3){string sqlA = "select AVG(numY) from BrokenLine40 ";string sqlMax = "select MAX(numY) from BrokenLine40";string sqlMin = "select MIN(numY) from BrokenLine40";string sqlCount = "select count(1) from BrokenLine40";stripMax = Line.SetLine(sqlMax, 0.02, Color.DarkGreen, out Max);textMAX.Text = Max.ToString();stripMin = Line.SetLine(sqlMin, 0.02, Color.DarkGreen, out Min);textMIN.Text = Min.ToString();stripMid = Line.SetLine(sqlA, 0.03, Color.Orange, out Mid);texAvg.Text = Mid.ToString("0.00");double Count = SqlHelper.Count(sqlCount);textCount.Text = Count.ToString();stripMid.Text = string.Format("标准值:{0:F}", 40);//展示文本stripMid.IntervalOffset = 40;string sqlS = "select numX,numY from BrokenLine40";DataTable dt = SqlHelper.GetDataTable(sqlS);chart1.DataSource = dt;for (int i = 0; i < dt.Columns.Count; i++){chart1.Series[0].YValueMembers = dt.Columns[i].ColumnName;}chart1.ChartAreas[0].AxisY.StripLines.Add(stripMax);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMin);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMid);this.chart1.ChartAreas[0].AxisY.Minimum = Min-0.05;this.chart1.ChartAreas[0].AxisY.Maximum = Max+0.05;}if (cbbMidLine.SelectedIndex == 4){string sqlA = "select AVG(numY) from BrokenLine50 ";string sqlMax = "select MAX(numY) from BrokenLine50";string sqlMin = "select MIN(numY) from BrokenLine50";string sqlCount = "select count(1) from BrokenLine50";stripMax = Line.SetLine(sqlMax, 0.02, Color.DarkGreen, out Max);textMAX.Text = Max.ToString();stripMin = Line.SetLine(sqlMin, 0.02, Color.DarkGreen, out Min);textMIN.Text = Min.ToString();stripMid = Line.SetLine(sqlA, 0.03, Color.Orange, out Mid);texAvg.Text = Mid.ToString("0.00");double Count = SqlHelper.Count(sqlCount);textCount.Text = Count.ToString();stripMid.Text = string.Format("标准值:{0:F}", 50);//展示文本stripMid.IntervalOffset = 50;string sqlS = "select numX,numY from BrokenLine50";DataTable dt = SqlHelper.GetDataTable(sqlS);chart1.DataSource = dt;for (int i = 0; i < dt.Columns.Count; i++){chart1.Series[0].YValueMembers = dt.Columns[i].ColumnName;}chart1.ChartAreas[0].AxisY.StripLines.Add(stripMax);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMin);chart1.ChartAreas[0].AxisY.StripLines.Add(stripMid);this.chart1.ChartAreas[0].AxisY.Minimum = Min-0.05;this.chart1.ChartAreas[0].AxisY.Maximum = Max+0.05;}}
- 窗体Load事件是双击触发
- combobox(在此项目中改名为cbbMidLine)的值改变事件是在属性里的事件里找到SelectedChanged再点击
- 点击完的效果
- 数据库的设计
- 表的设计
BrokenLine10–BrokenLine50,设计都是一样的此表放平均值
3.浅贴一下效果
- 标准值为10
- 20
- 30
算是完结了吧 ,有问题一起交流鸭
C# chart画折线相关推荐
- 折线图_R语言画折线图?
笔者邀请您,先思考: 1 折线图有什么作用?如何画折线图 折线图(Line chart)是将数据表示为一系列称为"标记"的数据点,数据点之间由线段连接而成.它是类似散点图,除了测量 ...
- python 折线图 excel_Python操作Excel,openpyxl模块,画折线图
一.如图 30万数据,比较大,挤一起了 import sys import uuid import string import json import time import random impor ...
- java 折线动图_Java画折线图
JFreeChart 是开放源代码站点SourceForge.net 上的一个 JAVA 项目,它主要用来各种各样的图表,这些图表包括:饼图.柱状图 ( 普通柱状图以及堆栈柱状图 ).线图.区域图.分 ...
- python画柱状图 画折线图
# 画柱状图 plt.bar(x_labels, grid) 画折线图 """ for i in range(len(grid)-1): ...
- python怎么做折线图_python怎么画折线图
匿名用户 1级 2018-01-18 回答 一.环境准备 linux ubuntu 下需安装下面三个包: Numpy, Scipy,Matplotlib 分别输入下面的代码进行安装: [plain] ...
- echarts入门基础,画折线图
注意:一定要自己引入echarts库 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...
- python画折线图代码-用Python画论文折线图、曲线图?几个代码模板轻松搞定!
前言 这几天在搞论文图,唉说实话抠图这种东西真能逼死人.坐在电脑前抠上一天越看越丑,最后把自己丑哭了-- 到了画折线图分析的时候,在想用哪些工具的时候.首先否决了excel,读书人的事,怎么能用exc ...
- python画折线图代码-Python折线图的分析过程和画图的方法
说起折线图,很多人都觉得非常简单,不就是一些点连成的线吗?用 Excel 几秒钟就能画出一张折线图. 真的就这么简单吗? 想一想:在普通的折线图中,如何自动地添加一条代表平均值的横线?如何添加一条带箭 ...
- python画折线图代码-python绘制简单折线图代码示例
1.画最简单的直线图 代码如下: import numpy as np import matplotlib.pyplot as plt x=[0,1] y=[0,1] plt.figure() plt ...
- python如何绘制折线图-python如何画折线图
python画折线图利用的是matplotlib.pyplot.plot的工具来绘制折线图,这里先给出一个段代码和结果图:# -*- coding: UTF-8 -*- import numpy as ...
最新文章
- 解决pip install keras报错问题
- OpenCV用ArUco和ChArUco进行校准
- bean覆盖 springboot_Springboot配置加载覆盖值顺序
- Python 中 xpath 语法 与 lxml 库解析 HTML/XML 和 CSS Selector
- 这款耳机堪比千元级的AirPods
- 【Pytorch】X.view(-1)操作
- ARM平板电脑移植Linux,iperf ARM移植
- android servlet乱码问题,初识 JSP---(Servlet映射 / ServletRequest / get与post区别 / 解决乱码)...
- 2. PSR-2 --- 代码风格指南
- 聪明贝塔(Smart Beta)
- 2021-09-08 集成学 习 思想概述
- 史上最全电脑优化小技巧
- Super odometry:以IMU为核心的激光雷达视觉惯性融合框架(ICRA2021)
- 2018-2019金融周期下的武汉楼市和政策解析
- 二进制除法原理——两种简便方法
- win11窗口桌面管理器突然很吃内存?
- 【算法学习笔记07】贪心算法(Greedy Algorithm)
- 百练2739:计算对数题解
- 什么是绩效点、奖励加分、处罚扣分
- 开源pdf读取_Wallabag可满足您的开源读取后应用程序需求
热门文章
- item_search_img - 按图搜索1688商品(拍立淘)
- trackmaker翻译_体育翻译滑雪中英对照翻译
- 开源漫画翻译神器! AI 自动清除、填补漫画文字!
- 使用mindspore过程中Using shared memory queue, but rowsize is larger than allocated
- 线上服务应急攻关方法论
- 项目5—中断控制LED下降沿有效与低电平触发
- Python办公自动化之Excel报表自动化,看这一篇就够了!
- 利用计算机制作多媒体最后一步,计算机多媒体技术在影视后期制作的运用
- 查看对方使用什么手机型号
- 通过温度湿度计算露点