下载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
线状图
柱状图
