.Net 第三方繪圖控件 dotnetCharting 和 ZedGraph 比較, Windows Installer CleanUp 公用程式,解決軟體無法安裝的問題
七月 22

使用 ZedGraph 製作統計圖

程式.瀏覽:[ 3,451user+2,717機器人 ]給個回應

這幾天研究了 ZedGraph,發現它是一套很好用的畫圖表工具,練習做了一個統計圖,大家參考看看!

C#:
  1. //記得要加入參考
  2. using ZedGraph;
  3.  
  4. //資料來源       
  5. private DataTable getDT()
  6. {
  7.     DataTable dt = new DataTable();
  8.     dt.Columns.Add("學號", System.Type.GetType("System.String"));
  9.     dt.Columns.Add("姓名", System.Type.GetType("System.String"));
  10.     dt.Columns.Add("國文", System.Type.GetType("System.Int32"));
  11.     dt.Columns.Add("英文", System.Type.GetType("System.Int32"));
  12.     dt.Columns.Add("數學", System.Type.GetType("System.Int32"));
  13.  
  14.     dt.Rows.Add("B9510001", "崔昱翰", 85, 66, 71);
  15.     dt.Rows.Add("B9510002", "王詩光", 65, 92, 88);
  16.     dt.Rows.Add("B9510003", "劉育白", 52, 66, 63);
  17.     dt.Rows.Add("B9510004", "許威宇", 98, 70, 61);
  18.     dt.Rows.Add("B9510005", "李佩珊", 81, 63, 76);
  19.     dt.Rows.Add("B9510006", "潘紹興", 91, 77, 76);
  20.  
  21.     return dt;
  22. }
  23.  
  24. //學生成績
  25. public void StudentChart1(ZedGraphControl zgc)
  26. {
  27.     // Google網域搜尋:Fill site:http://zedgraph.sourceforge.net/documentation
  28.  
  29.     GraphPane myPane = zgc.GraphPane;
  30.    
  31.     //
  32.     DataTable dt = getDT();
  33.  
  34.     // Set the title and axis labels
  35.     myPane.Title.Text = "學生成績量化表";
  36.     myPane.XAxis.Title.Text = "學生姓名";
  37.     myPane.YAxis.Title.Text = "分數";
  38.  
  39.     PointPairList list1 = new PointPairList();
  40.     PointPairList list2 = new PointPairList();
  41.     PointPairList list3 = new PointPairList();
  42.    
  43.     Random rand = new Random();
  44.  
  45.     // Generate random data for three curves
  46.     for (int i = 0; i <dt.Rows.Count; i++)
  47.     {
  48.        
  49.         double x = (double)i;
  50.         double y1_chian = Convert.ToDouble(dt.Rows[i]["國文"]);
  51.         double y2_eng = Convert.ToDouble(dt.Rows[i]["英文"]);
  52.         double y3_math = Convert.ToDouble(dt.Rows[i]["數學"]);
  53.         list1.Add(x, y1_chian);
  54.         list2.Add(x, y2_eng);
  55.         list3.Add(x, y3_math);
  56.     }
  57.  
  58.     // create the curves
  59.     // BarItem.Bar.Fill(Color) 填入單一顏色
  60.     // BarItem.Bar.Fill(Color, Color, Color, 90) 填入漸層顏色,第4參數是旋轉角度
  61.     BarItem myCurve1 = myPane.AddBar("國文", list1, Color.Red);
  62.     myCurve1.Bar.Fill = new Fill(Color.FromArgb(255, 238, 221));
  63.    
  64.     BarItem myCurve2 = myPane.AddBar("英文", list2, Color.Blue);
  65.     myCurve2.Bar.Fill = new Fill(Color.FromArgb(221, 255, 238));
  66.    
  67.     BarItem myCurve3 = myPane.AddBar("數學", list3, Color.Green);
  68.     myCurve3.Bar.Fill = new Fill(Color.FromArgb(238, 221, 255));
  69.  
  70.    
  71.    
  72.     // Fill the axis background with a color gradient
  73.     // 背景色
  74.     // myPane.Chart.Fill = new Fill(Color.White, Color.FromArgb(255, 255, 166), 45.0F);
  75.  
  76.     myPane.XAxis.MajorTic.IsBetweenLabels = true;
  77.  
  78.     //加入X LabelText
  79.     string[] labels = new string[6];
  80.     for (int i = 0; i <dt.Rows.Count; i++)
  81.     {
  82.         labels[i] = Convert.ToString(dt.Rows[i]["姓名"]);
  83.     }
  84.     myPane.XAxis.Scale.TextLabels = labels; //X軸的說明文字
  85.     myPane.XAxis.Type = AxisType.Text;      //X軸類型
  86.  
  87.     //重新計算目前數據範圍
  88.     zgc.AxisChange();
  89.  
  90.     // expand the range of the Y axis slightly to accommodate the labels
  91.     // myPane.YAxis.Scale.Max += myPane.YAxis.Scale.MajorStep;
  92.     // YAxis最大值
  93.     myPane.YAxis.Scale.Max = 110;
  94.  
  95.     // Create TextObj's to provide labels for each bar
  96.     // 在bar上顯示數值
  97.     BarItem.CreateBarLabels(myPane, false, "f0");
  98.  
  99.     //顯示格點
  100.     myPane.YAxis.MajorGrid.IsVisible = true;
  101.     myPane.XAxis.MajorGrid.IsVisible = true;
  102. }

標籤: ,



文章發表日期:2009-07-22
本篇文章引用網址:

其他隨機文章:
  • 使用 CommandBuilder 來自動產生 SQL 陳述式
  • 今天考丙級軟體設計...
  • 央行3個月內第4度降息,敲下經濟衰退的喪鐘
  • [WP] 顯示分類項目中的所有文章
  • 裝熟


  • 2 個回應在 “使用 ZedGraph 製作統計圖”

    1. josh 說道:

      請問如果要設計當數值大於0時候為紅色柱狀
      小於0為綠色柱狀,不知道這樣程式中要如何更改呢?
      謝謝

      [回應]

      blue955 Reply:

      應該用if判斷,然後加上色碼就可以了...

      [回應]


    寫下回應