ZedGraph使用經驗(轉帖)


 更改背景色  myPane.Fill = new Fill(Color.Black);

 

Zedgraph 柱狀圖的寬度   gp.BarSettings.ClusterScaleWidth = 2;
                                  gp.BarSettings.ClusterScaleWidthAuto = false;                    
,你只設置了第一行代碼,加上第二行代碼就可以了,因為它默認是自動設置寬度

zedGraph柱狀圖顯示不面顏色 http://bbs.csdn.net/topics/350115026

 

開源的統計圖控件中基本常用的是OpenFlashChar和ZedGraph,今天就先來講講ZedGraph的使用。

ZedGraph資源

 

ZedGraph的特點:

  • 第一,可以先生成圖片后再顯示,這對一些多用戶並發有點幫助。(RenderMode.ImageTag)
  • 第二,可以動態生成,不用保存文件,可以減少IO的讀寫消耗。(RenderMode.RawImage)
  • 第三,比較多的呈現方式,比如曲線圖、柱狀圖、餅圖等。

 

ZedGraph的缺點:

  • 第一,編碼的時候,在設置屬性時太爛了,一點注釋都沒有,不要說是中文的啦,就連英文都沒有,太不方便了。
  • 第二,圖表的顯示比較簡陋,沒有OpenFlashChar來得好看。

 

注意事宜

  • 第一,當前的最新版本是5.1.5,我以前也使用過4.3.4的版本,這兩個版本的差別很大,很多屬性都已經不存在了,面向對象的感念可能加強了不少,也清晰了不少,因為現在的屬性設置都是先實體,再屬性了,而以前就比較混亂了。所以在使用不同的版本的時候要注意這點。
  • 第二,在Windows Forms和 ASP.Net Web Form中使用是不同。

 

一個簡單的入門例子

  • 第一,在 bin文件夾中加入 Zedgraph.dll 和Zedgraph.web.dll;
  • 第二,添加這兩個dll的引用;
  • 第三,在網站下要創建一個空文件夾,名稱為 'ZedGraphImages',這個文件夾名稱是默認的,要修改這個文件夾名稱,可以修改屬性 RenderedImagePath,CacheDuration緩存的持續時間。ZedGraph會生成一圖片存放在緩存的目錄中,顯示圖片時,會生成一個img標簽代替ZedGraphWeb標簽,並在一個時間內,"欺騙"瀏覽器加載這張圖片;
  • 第四,在 aspx文件中加入:<%@ Register TagPrefix="zgw" Namespace="ZedGraph.Web" Assembly="ZedGraph.Web" %>;在html中加入<zgw:ZedGraphWeb ID="ZedGraphWeb1" runat="server" Width="300" Height="130" RenderMode="ImageTag"></zgw:ZedGraphWeb> 
  • 第五,在cs文件中添加引用: using ZedGraph;using ZedGraph.Web;using System.Drawing;//顏色
  • 第六,注冊事件,this.ZedGraphWeb1.RenderGraph += new ZedGraph.Web.ZedGraphWebControlEventHandler(GetImage);//注冊事件
  • 第七,寫方法,private void GetImage(ZedGraphWeb zgw, Graphics g, MasterPane masterPane){}
  • 具體代碼可以參考ZedGraph webform 初學小例子 (代碼有詳細解釋)

一些經驗

  • 傳遞數據的時候可以使用字典:IDictionary<int, int> dic;
  • 一些屬性設置
myPane.XAxis.Scale.FontSpec.Size = 30;//設置x軸的文字大小. myPane.YAxis.Scale.FontSpec.Size = 30;//設置y軸的文字大小. myPane.YAxis.MajorGrid.IsVisible = true;//設置虛線. myPane.Chart.Border.IsVisible = false;//圖表區域的邊框設置. myPane.Legend.IsVisible = false;//圖表的注釋標簽顯示設置項目.
  • 動態根據傳入的數據顯示的方法
復制代碼
        /// <summary>         /// 曲線圖.         /// </summary>         public void CreateLineChart(GraphPane myPane, IDictionary<intint> dic, string title, string xField, string yFields, string format)         {             myPane.XAxis.Scale.FontSpec.Size = 30;//設置x軸的文字大小.             myPane.YAxis.Scale.FontSpec.Size = 30;//設置y軸的文字大小.             myPane.YAxis.MajorGrid.IsVisible = true;//設置虛線.             myPane.Chart.Border.IsVisible = false;//圖表區域的邊框設置.             myPane.Legend.IsVisible = false;//圖表的注釋標簽顯示設置項目.             int rows = dic.Count;             double[] arrY = new double[rows];             double[] arrX = new double[rows];             string[] labels = new string[rows];
            int i = 0;             foreach (KeyValuePair<intint> kvp in dic)             {                 arrX[i] = Convert.ToDouble(kvp.Key);                 arrY[i] = Convert.ToDouble(kvp.Value);                 labels[i] = kvp.Key.ToString();                 i++;             }
            LineItem myCurve = myPane.AddCurve(title, arrX, arrY, Color.Red, SymbolType.Square);             myCurve.Symbol.Fill = new Fill(Color.Blue, Color.White, Color.Blue);//填充這個藍條,讓這藍條看起來有3D的效果             myCurve.Line.Width = 2;
            myPane.XAxis.Scale.TextLabels = labels; //X軸的說明文字             myPane.XAxis.Type = AxisType.Text;         }
復制代碼
  • 小圖的屬性設置
            myPane.XAxis.Scale.FontSpec.Size = 30;//設置x軸的文字大小.             myPane.YAxis.Scale.FontSpec.Size = 30;//設置y軸的文字大小.             myPane.YAxis.MajorGrid.IsVisible = true;//設置虛線.             myPane.Chart.Border.IsVisible = false;//圖表區域的邊框設置.             myPane.Legend.IsVisible = false;//圖表的注釋標簽顯示設置項目.
  • 小圖的屬性設置刻度問題
            myPane.YAxis.Scale.Min = 0;//設置只顯示正半軸.             myPane.YAxis.Scale.MajorStep = 1;//設置刻度為1;

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM