zoukankan      html  css  js  c++  java
  • 柱状统计图

    sql语句:

    create database DBTest
    go
    use DBTest
    go
    create table VisiteCount
    (
        id int identity(1,1) primary key not null,--自增列
        loginTime Datetime --访问时间
    )
    
    insert into VisiteCount values('2013-01-01');
    insert into VisiteCount values('2013-02-01');
    insert into VisiteCount values('2013-02-02');
    insert into VisiteCount values('2013-03-01');
    insert into VisiteCount values('2013-03-02');
    insert into VisiteCount values('2013-03-03');
    insert into VisiteCount values('2013-04-01');
    insert into VisiteCount values('2013-04-02');
    insert into VisiteCount values('2013-04-03');
    insert into VisiteCount values('2013-04-04');
    insert into VisiteCount values('2013-05-01');
    insert into VisiteCount values('2013-05-02');
    insert into VisiteCount values('2013-05-03');
    insert into VisiteCount values('2013-05-04');
    insert into VisiteCount values('2013-05-05');
    insert into VisiteCount values('2013-06-01');
    insert into VisiteCount values('2013-06-02');
    insert into VisiteCount values('2013-06-03');
    insert into VisiteCount values('2013-06-04');
    insert into VisiteCount values('2013-06-05');
    insert into VisiteCount values('2013-06-06');
    insert into VisiteCount values('2013-07-01');
    insert into VisiteCount values('2013-07-02');
    insert into VisiteCount values('2013-07-03');
    insert into VisiteCount values('2013-07-04');
    insert into VisiteCount values('2013-07-05');
    insert into VisiteCount values('2013-07-06');
    insert into VisiteCount values('2013-07-07');
    insert into VisiteCount values('2013-08-01');
    insert into VisiteCount values('2013-08-02');
    insert into VisiteCount values('2013-08-03');
    insert into VisiteCount values('2013-08-04');
    insert into VisiteCount values('2013-08-05');
    insert into VisiteCount values('2013-08-06');
    insert into VisiteCount values('2013-08-07');
    insert into VisiteCount values('2013-08-08');
    insert into VisiteCount values('2013-09-01');
    insert into VisiteCount values('2013-09-02');
    insert into VisiteCount values('2013-09-03');
    insert into VisiteCount values('2013-09-04');
    insert into VisiteCount values('2013-09-05');
    insert into VisiteCount values('2013-09-06');
    insert into VisiteCount values('2013-09-07');
    insert into VisiteCount values('2013-09-08');
    insert into VisiteCount values('2013-09-09');
    insert into VisiteCount values('2013-10-01');
    insert into VisiteCount values('2013-10-02');
    insert into VisiteCount values('2013-10-03');
    insert into VisiteCount values('2013-10-04');
    insert into VisiteCount values('2013-10-05');
    insert into VisiteCount values('2013-10-06');
    insert into VisiteCount values('2013-10-07');
    insert into VisiteCount values('2013-10-08');
    insert into VisiteCount values('2013-10-09');
    insert into VisiteCount values('2013-10-10');
    insert into VisiteCount values('2013-11-01');
    insert into VisiteCount values('2013-11-02');
    insert into VisiteCount values('2013-11-03');
    insert into VisiteCount values('2013-11-04');
    insert into VisiteCount values('2013-11-05');
    insert into VisiteCount values('2013-11-06');
    insert into VisiteCount values('2013-11-07');
    insert into VisiteCount values('2013-11-08');
    insert into VisiteCount values('2013-11-09');
    insert into VisiteCount values('2013-11-10');
    insert into VisiteCount values('2013-11-11');
    insert into VisiteCount values('2013-12-01');
    insert into VisiteCount values('2013-12-02');
    insert into VisiteCount values('2013-12-03');
    insert into VisiteCount values('2013-12-04');
    insert into VisiteCount values('2013-12-05');
    insert into VisiteCount values('2013-12-06');
    insert into VisiteCount values('2013-12-07');
    insert into VisiteCount values('2013-12-08');
    insert into VisiteCount values('2013-12-09');
    insert into VisiteCount values('2013-12-10');
    insert into VisiteCount values('2013-12-11');
    insert into VisiteCount values('2013-12-12');
    View Code

    cs代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.Drawing;
    using System.Drawing.Drawing2D;
    using System.Data;
    
    public partial class VisiteCount : System.Web.UI.Page
    {
        public string connStr = ConfigurationManager.ConnectionStrings["VisitCountConnectionString"].ToString();
        protected void Page_Load(object sender, EventArgs e)
        {
            DrawLinearGradient();
        }
    
        //访问人数统计
        public int Total()
        {
            int result = -1;
            string sql = "select count(1) from VisiteCount";
            SqlConnection conn = new SqlConnection(connStr);
            conn.Open();
            SqlCommand cmd = new SqlCommand(sql, conn);
            result =Convert.ToInt32(cmd.ExecuteScalar());
            cmd.Dispose();
            conn.Close();
            return result;
        }
    
        //柱形图
        public void DrawLinearGradient()
        {
            int height = 400, width = 600;//定义画布长宽
            /*新建一个画布*/
            Bitmap image = new Bitmap(width, height); 
            //Graphics GDI+绘图的表面。即绘图的一个平台。
            Graphics g = Graphics.FromImage(image);
    
            /*绘制背景墙、网格线以及坐标*/
            g.Clear(Color.White);//清空背景
            //创建字体对象
            Font font = new Font("Arial",9,FontStyle.Regular);
            Font font1 = new Font("宋体",20,FontStyle.Bold);
            //创建一个矩形
            Rectangle rectangle = new Rectangle(0, 0, image.Width, image.Height);
            //创建一个线性渐变画笔。
            LinearGradientBrush brush = new LinearGradientBrush(rectangle, Color.Blue, Color.BlueViolet, 1.2f, true);
            //调用Graphics对象的FileRectangle方法在画布中绘制一个使用渐变图案填充的矩形。
            g.FillRectangle(Brushes.WhiteSmoke, 0, 0, width, height);
            g.DrawString("2013年各月份网站流量统计", font1, brush, new PointF(130, 30));
    
            /*画图片的边框线*/
            //绘制由坐标对、宽度和高度指定的矩形。
            g.DrawRectangle(new Pen(Color.Blue), 0, 0, image.Width - 1, image.Height - 1);
            
            /*绘制线条*/
            //绘制纵向线条
            int x = 100;
            Pen mypen = new Pen(brush,1); //用于绘制直线和曲线对象
            for (int i = 0; i < 11; i++)
            {
                g.DrawLine(mypen, x, 80, x, 340);
                x = x + 40;
            }
            Pen mypen1 = new Pen(Color.Blue, 2);
            g.DrawLine(mypen1, x - 480, 80, x - 480, 340);
            //绘制横向线条
            int y = 106;
            for (int i = 0; i < 9; i++)
            {
                g.DrawLine(mypen, 60, y, 540, y);
                y = y + 26;
            }
            g.DrawLine(mypen1, 60, y, 540, y);
    
            /*为已经绘制的坐标轴绘制数据标记。X轴显示月份,y轴显示百分比刻度*/
            //X轴
            string[] n = {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
            x = 62;
            for (int i = 0; i < 12; i++)
            {
                g.DrawString(n[i].ToString(), font, Brushes.Black, x, 380);
                x = x + 40;
            }
            //y轴
            string[] m = {"100%","90%","80%","70%","60%","50%","40%","30%","20%","10%","0%"};
            y = 85;
            for (int i = 0; i < 11; i++)
            {
                g.DrawString(m[i].ToString(),font,Brushes.Black,25,y);//设置文字内容以及输出位置
                y = y + 25;
            }
            //将检索出的数据按一定比例绘制到图像中
            int[] count = new int[12];
            string sql = "";
            SqlConnection conn = new SqlConnection(connStr);
            conn.Open();
            SqlDataAdapter da;
            DataSet ds = new DataSet();
            for (int i = 0; i < 12; i++)
            {
                sql = @"select count(1) as count,Month(loginTime) as month from VisiteCount where YEAR(loginTime)=2013 and MONTH(loginTime)=" + (i + 1) + " group by MONTH(loginTime)";
                da = new SqlDataAdapter(sql, conn);
                da.Fill(ds, i.ToString());
                if (ds.Tables[i].Rows.Count == 0)
                {
                    count[i] = 0;
                }
                else
                {
                    //count[i] = Convert.ToInt32(ds.Tables[i].Rows[0][0].ToString())*100/Total();
                    count[i] = Convert.ToInt32(ds.Tables[i].Rows[0][0].ToString());
                }
            }
    
            //显示柱状效果图
            x = 70;
            for (int i = 0; i < 12; i++)
            {
                //g.DrawString(count[i], font, Brushes.Red, x-5, 320 - count[i] * 26 / 10);
                string dble = (Convert.ToDouble(count[i])/Total()*100).ToString().Substring(0,4);
                g.DrawString(dble.ToString()+"%", font, Brushes.Red, x-5, 320 - (count[i]*100/Total()) * 26 / 10);
                SolidBrush mybrash = new SolidBrush(Color.Blue);
                g.FillRectangle(mybrash, x, 340 - (count[i] * 100 / Total()) * 26 / 10, 20, (count[i] * 100 / Total()) * 26 / 10);
                x = x+40;
            }
    
            //将绘制好的助兴图标显示在页面上
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            Response.ClearContent();
            Response.ContentType = "image/Jpeg";
            Response.BinaryWrite(ms.ToArray());
        }
    }
    View Code
  • 相关阅读:
    毛皮立方体
    APPLE buSinEss
    #4613. problem C
    #4614. problem B
    idiots
    熊猫(i)
    圆盘自动机 cell
    小L的占卜
    有趣的数(number)
    「JOISC 2015 Day 1」卡片占卜
  • 原文地址:https://www.cnblogs.com/Jokers/p/3520319.html
Copyright © 2011-2022 走看看