C#利用折线图分析产品销售走势
图形界面

数据

查询效果

代码
private void button1_Click(object sender, EventArgs e)
{
G++;
DrowFont(this.comboBox1.Text.ToString());
DrowInfo(this.comboBox1.Text.ToString());
DrowPic(this.comboBox1.Text.ToString());
}
private void DrowFont(string str)
{
using(Graphics GrapFont = this.panel1.CreateGraphics())
{
GrapFont.Clear(Color.SeaShell);
Pen p = new Pen(Color.Blue, 2.0f);
Font f = new Font("华文新魏", 12, FontStyle.Regular);
Brush b = new SolidBrush(Color.Blue);
GrapFont.DrawString("『" + str + "』"+"产品销售走势", f, b, 4.0f, 5.0f);
}
}
private void DrowInfo(string str)
{
Graphics g = this.groupBox2.CreateGraphics(); //创建Graphics对象
g.Clear(Color.SeaShell); //设置背景颜色
Brush b = new SolidBrush(Color.Blue); //创建Brush对象
Font f = new Font("Arial", 9, FontStyle.Regular); //设置Font对象
using (sqlAda = new SqlDataAdapter("select * from tb_merchandise where t_name='" + str + "' order by t_date", con))
{
DataSet ds = new DataSet(); //创建DataSet对象
sqlAda.Fill(ds, "tb_09"); //Fill方法填充对象
g.DrawString("月份: " + "价格", f, b, 10.0f, 25.0f); //绘制标题
for (int i = 0; i < ds.Tables[0].Rows.Count; i++) //绘制月份及相应的产品价格
{
int month = Convert.ToDateTime(ds.Tables[0].Rows[i][2].ToString()).Month;//获取月份
if (month >= 10)
{
//绘制月份及价格
g.DrawString(month + "月: " + "『" + ds.Tables[0].Rows[i][3].ToString() + " 』", f, b, 10.0f, (i + 2) * 25.0f);
}
else
{
g.DrawString("0" + month + "月: " + "『" + ds.Tables[0].Rows[i][3].ToString() + " 』", f, b, 10.0f, (i + 2) * 25.0f);
}
}
}
}
private void DrowPic(string str)
{
int MaxValue, MinValue; //声明变量记录最大值和最小值
using (cmd = new SqlCommand("select Max(t_price) from tb_merchandise where t_name='" + str + "'", con))
{
con.Open(); //打开数据库连接
MaxValue = Convert.ToInt16(cmd.ExecuteScalar()); //获取最大值
con.Close(); //关闭数据库连接
}
using (cmd = new SqlCommand("select Min(t_price) from tb_merchandise where t_name='" + str + "'", con))
{
con.Open(); //打开数据库连接
MinValue = Convert.ToInt16(cmd.ExecuteScalar()); //获取最小值
con.Close(); //关闭数据库连接
}
Graphics g = this.groupBox1.CreateGraphics(); //创建Graphics对象
g.Clear(Color.SeaShell); //设置背景
Brush b = new SolidBrush(Color.Blue); //创建Brush对象
Font f = new Font("Arial", 9, FontStyle.Regular); //创建Font对象
Pen p = new Pen(b); //创建Pen对象
using (sqlAda = new SqlDataAdapter("select * from tb_merchandise where t_name='" + str + "' order by t_date", con))
{
ds = new DataSet(); //实例化DataSet对象
sqlAda.Fill(ds, "t_date"); //Fill方法填充对象
int M = MaxValue / 50 + 1; //最大值
int N = MinValue / 50; //最小值
int T = N;
for (int i = 0; i <= M - N; i++)
{
g.DrawString(Convert.ToString(T * 50), f, b, 0, 190 - 30 * i);
g.DrawLine(p, 30, 200 - 30 * i, 260, 200 - 30 * i);
T++;
}
int Num = ds.Tables[0].Rows.Count;
int[] Values = new int[Num];
for (int C = 0; C < Num; C++)
{
Values[C] = Convert.ToInt32(ds.Tables[0].Rows[C][3].ToString());
g.DrawString(Convert.ToDateTime(ds.Tables[0].Rows[C][2].ToString()).Month + "月", f, b, 30 * (C + 1) - 10, 15);
g.DrawLine(p, 30 * (C + 1), 200, 30 * (C + 1), 30);
}
Point[] P = new Point[Num];
for (int i = 0; i < Num; i++)
{
P[i].X = 30 * (i + 1);
P[i].Y = 290 - Convert.ToInt32(Values[i] / 50f * 30);
}
g.DrawLines(p, P);
}
}
C#利用折线图分析产品销售走势的更多相关文章
- 利用火焰图分析ceph pg分布
前言 性能优化大神Brendan Gregg发明了火焰图来定位性能问题,通过图表就可以发现问题出在哪里,通过svg矢量图来查看性能卡在哪个点,哪个操作占用的资源最多 在查看了原始数据后,这个分析的原理 ...
- 利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)
利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全) 14.4 利用JFreeChart生成折线图 通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折 ...
- excel制作折线图太麻烦?试试这些折线图在线生成工具
折线图是以折线的上升或下降来表示统计数量的增减变化的统计图,叫作折线统计图.用折线的起伏表示数据的增减变化情况,不仅可以表示数量的多少,而且可以反映数据的增减变化情况.并且折线图也是目前最方便的一种统 ...
- ajax实现highchart与数据库数据结合完整案例分析(三)---柱状折线图
作者原创,未经博主允许,不可转载 在前面分析和讲解了用java代码分别实现饼状图和折线图,在工作当中,也会遇到很多用ajax进行异步请求 实现highchart. 先展示一下实现的效果图: 用ajax ...
- java代码实现highchart与数据库数据结合完整案例分析(二)---折线图
作者原创:未经博主允许不许转载 在上一篇的博客中,展示和分析了如何做一个饼状图,有疑问可以参考上一篇博客. 现在分析和展示折线图的绘制和案例分析, 先展示效果图: 与饼状图不同的是,折线图展现更多的数 ...
- 利用pandas读取Excel表格,用matplotlib.pyplot绘制直方图、折线图、饼图
利用pandas读取Excel表格,用matplotlib.pyplot绘制直方图.折线图.饼图 数据: 折线图代码: import pandas as pdimport matplotlib. ...
- [canvas]利用canvas绘制自适应的折线图
前段时间学习了用canvas绘制折现图,且当画布变换大小,折现图会随之变化,现附上代码 <!DOCTYPE html> <html lang="en"> & ...
- java利用JFreeChart实现各种数据统计图(柱形图,饼图,折线图)
最近在做数据挖掘的课程设计,需要将数据分析的结果很直观的展现给用户,这就要用到数据统计图,要实现这个功能就需要几个第三方包了: 1. jfreechart-1.0.13.jar 2. ...
- 利用python进行折线图,直方图和饼图的绘制
我用10个国家某年的GDP来绘图,数据如下: labels = ['USA', 'China', 'India', 'Japan', 'Germany', 'Russia', 'Brazil', ...
- SAS 画折线图PROC GPLOT
虽然最后做成PPT里的图表会被要求用EXCEL画,但当我们只是在分析的过程中,想看看数据的走势,直接在SAS里画会比EXCEL画便捷的多. 修改起来也会更加的简单,,不用不断的修改程序然后刷新EXCE ...
随机推荐
- 【Postman&JMeter】使用Postman和JMeter进行signature签名
使用Postman和JMeter进行signature签名 目录 使用Postman和JMeter进行signature签名 一.前言 二.v0接口 1.Postman 2.JMeter 三.v1接口 ...
- 【UniApp】-uni-app-路由
前言 好,经过上个章节的介绍完毕之后,了解了一下 uni-app-CompositionAPI应用生命周期和页面生命周期 那么了解完了uni-app-CompositionAPI应用生命周期和页面生命 ...
- 通过工厂函数封装返回app对象
main.py #主文件 import os from app import create_app # 通过环境变量设置项目运行时使用的配置文件,这里就手动设置以下了,一般部署的时候通过脚本等设置. ...
- ASR项目实战-项目交付历程
本文记录,作为项目主要负责人,完整参与语音识别项目的交付历程. 2019年12月中旬 接到项目交付任务,收集基本知识,启动业务分析工作. 2020年1月 完成竞品分析的整理. 梳理合作伙伴的清单,整理 ...
- ElasticSearch之Analyze index disk usage API
本API用于分析.统计指定index当前占用的存储空间. 考虑到本特性目前仍然处于预览状态,因此使用方法.参数等可能会发生变化,或者未来也许会被删除. 本API暂时不建议在生产系统中使用. 命令样例如 ...
- 踩坑ffmpeg录制的mp4无法在浏览器上播放
前言 使用ffmpeg编译好的程序在电脑上进行音视频转换,可以参考这篇:<windows电脑FFmpeg安装教程手把手详解_windows安装ffmpeg>,而我们要做的是在游戏引擎中集成 ...
- Spring Boot 导出EXCEL模板以及导入EXCEL数据(阿里Easy Excel实战)
Spring Boot 导出EXCEL模板以及导入EXCEL数据(阿里Easy Excel实战) 导入pom依赖 编写导出模板 @ApiOperation("导出xxx模板") @ ...
- 图片标注-----labelimage
本人用的环境是 win10 + python3.6 pip install labelimg 安装成功之后,找到 Anaconda 安装目录下的 Lib , 然后找到 site-pa ...
- 文心一言 VS 讯飞星火 VS chatgpt (29)-- 算法导论5.2 1题
一.在 HIRE-ASSISTANT 中,假设应聘者以随机顺序出现,你正好雇用一次的概率是多少?正好雇用 n 次的概率是多少? 文心一言: 讯飞星火: 华为盘古: 在HIRE-ASSISTANT中,假 ...
- 十问Huawei Cloud Toolkit:开发插件如何提升云上开发效能
本文分享自华为云社区<[云享问答]第2期 十问Huawei Cloud Toolkit:开发插件如何提升云上开发效能>,作者:华为云社区精选. 众所周知,桌面集成开发环境(IDE)已经融入 ...