ZedGraph做統計

下載ZedGraph.dll,在工具箱添加  ,然後將空間拖入界面,,
ZedGraph.dll下載地址 : http://download.csdn.net/detail/happy09li/4276410


參考資料  點擊打開鏈接


    private void Form9_Load(object sender, EventArgs e)
        {
            DataTable dt =Returntable();
            double[] arrvalues = new double[dt.Rows.Count];
            Color[] colors = new Color[dt.Rows.Count];
            string[] names = new string[dt.Rows.Count];
            for (int j = 0; j < dt.Rows.Count; j++)
            {
                names[j] = dt.Rows[j]["Name"].ToString();//顯示的名稱
                string doccount = dt.Rows[j]["Num"].ToString();//顯示個數
                arrvalues[j] = double.Parse(doccount);
                colors[j] = GetColor();
            }
            bindStat(arrvalues, names, colors);
        }

   private DataTable Returntable()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Name");
            dt.Columns.Add("Num");
            for (int i = 0; i < 20; i++)
            {
                DataRow dr = dt.NewRow();
                dr["Num"] = i;
                dr["Name"] = DateTime.Now.ToString("yyyyMMdd") + i;
                dt.Rows.Add(dr);
            }
            return dt;
        }
        

        /// <summary>
        /// 隨機成一個顏色
        /// </summary>
        /// <returns></returns>
        private Color GetColor()
        {
            Random RandomNum_First = new Random((int)DateTime.Now.Ticks);
            //  對於C#的隨機數,沒什麼好說的 
            System.Threading.Thread.Sleep(RandomNum_First.Next(100));
            Random RandomNum_Sencond = new Random((int)DateTime.Now.Ticks);
            //  爲了在白色背景上顯示,儘量生成深色 
            int int_Red = RandomNum_First.Next(256);
            int int_Green = RandomNum_Sencond.Next(256);
            int int_Blue = (int_Red + int_Green > 400) ? 0 : 400 - int_Red - int_Green;
            int_Blue = (int_Blue > 255) ? 255 : int_Blue;
            return Color.FromArgb(int_Red, int_Green, int_Blue);
        }

        private void bindStat(double[] arrvalues, string[] titles, Color[] colors)
        {

            this.zedGraphCompare.GraphPane.XAxis.Title.Text = "姓名";
            this.zedGraphCompare.GraphPane.CurveList.Clear();
            this.zedGraphCompare.GraphPane.GraphObjList.Clear();
            this.zedGraphCompare.GraphPane.XAxis.Type = ZedGraph.AxisType.DateAsOrdinal;
            this.zedGraphCompare.GraphPane.Fill = new Fill(Color.White, Color.LightSkyBlue, 45.0f);
            this.zedGraphCompare.GraphPane.Chart.Fill = new Fill(Color.White, Color.LightSeaGreen, 45.0f);
            double[] arrValues = new double[titles.Length];
            string[] xtitles = titles;
            this.zedGraphCompare.GraphPane.YAxis.Scale.Min = 0;
            for (int i = 0; i < titles.Length; i++)
            {
                for (int m = 0; m < titles.Length; m++)
                {
                    if (i == m)
                    {
                        arrValues[m] = arrvalues[m];
                    }
                    else
                    {
                        arrValues[m] = 0;
                    }
                }
                BarItem myBar = this.zedGraphCompare.GraphPane.AddBar(titles[i], null, arrValues, colors[i]);
                myBar.Bar.Fill = new Fill(colors[i], Color.White, colors[i]);
                myBar.Bar.Border.Color = Color.Transparent;
           //   LineItem myBar = this.zedGraphCompare.GraphPane.AddCurve(titles[i], null, arrValues, colors[i]);  //線狀圖,註釋上面3行代碼
                this.zedGraphCompare.GraphPane.Tag = titles[i];
                if (!arrValues[i].ToString().Equals("0"))
                {
                    TextObj va = new TextObj(arrValues[i].ToString(), i + 1, arrValues[i] + 0.6, CoordType.AxisXYScale, AlignH.Center, AlignV.Center);
                    va.FontSpec = new FontSpec("宋體", 8, Color.Black, false, false, true);//顯示個數字體大小
                    va.FontSpec.IsUnderline = false;
                    va.FontSpec.Fill.Color = Color.Transparent;
                    va.FontSpec.Border.IsVisible = false;     // 是否有邊框
                    this.zedGraphCompare.GraphPane.GraphObjList.Add(va);              // 填充
                }
            }
            this.zedGraphCompare.GraphPane.YAxis.MinSpace = 0;
            //讓X座標名字豎着顯示
            List<string> list = new List<string>();
            for (int i = 0; i < xtitles.Length; i++)
            {
                string value = "";
                for (int j = 0; j < xtitles[i].Length; j++)
                {
                    value += xtitles[i][j] + "\r\n";
                }
                list.Add(value);
            }
            string[] listvalue = new string[list.Count];
            for (int k = 0; k < list.Count; k++)
            {
                listvalue[k] = list[k];
            }
            this.zedGraphCompare.GraphPane.XAxis.Scale.TextLabels = listvalue;
            this.zedGraphCompare.GraphPane.XAxis.Scale.FontSpec.Size = 8;
            //this.zedGraphCompare.GraphPane.XAxis.Scale.FontSpec.Angle = 270;
            //this.zedGraphCompare.GraphPane.XAxis.Scale.FontSpec.
            this.zedGraphCompare.GraphPane.XAxis.Type = AxisType.Text;
            this.zedGraphCompare.GraphPane.BarSettings.Type = BarType.Overlay;
            this.zedGraphCompare.GraphPane.YAxis.Scale.MajorStep = 5;
            this.zedGraphCompare.GraphPane.XAxis.MajorTic.IsBetweenLabels = true;
            this.zedGraphCompare.AxisChange();
            this.zedGraphCompare.Refresh();
        }

  /// <summary>
        /// 漢化右鍵菜單
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="menuStrip"></param>
        /// <param name="mousePt"></param>
        /// <param name="objState"></param>
        private void zgcount_ContextMenuBuilder(ZedGraphControl sender, ContextMenuStrip menuStrip, Point mousePt, ZedGraphControl.ContextMenuObjectState objState)
        {
            foreach (ToolStripMenuItem item in menuStrip.Items)
            {
                if ((string)item.Tag == "copy")
                {
                    item.Text = "複製";
                }
                if ((string)item.Tag == "page_setup")
                {
                    item.Text = "頁面設置";
                }
                if ((string)item.Tag == "print")
                {
                    item.Text = "打印";
                }
                if ((string)item.Tag == "save_as")
                {
                    item.Text = "另存圖表";
                }
                if ((string)item.Tag == "set_default")
                {
                    item.Text = "恢復默認大小";
                }
                if ((string)item.Tag == "show_val")
                {
                    item.Text = "顯示節點數值";
                }
                if ((string)item.Tag == "undo_all")
                {
                    item.Text = "還原縮放/移動";
                }
                if ((string)item.Tag == "unzoom")
                {
                    item.Text = "還原縮放";
                }
}
}
            }
        }


這裏只是做了個柱狀圖的例子,,ZedGraph控件可以做很多類型的統計,詳情如下鏈接。
詳情http://www.cnblogs.com/peterzb/archive/2009/07/19/1526726.html


線狀圖



柱狀圖


發佈了29 篇原創文章 · 獲贊 41 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章