ZedGraph使用經驗

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

ZedGraph資源

  • ZedGraph來源:http://sourceforge.net/project/showfiles.php?group_id=114675
  • ZedGraph相關例子資源:http://zedgraph.org/wiki/index.php?title=Sample_Graphs?

?

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<int,?int>?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<int,?int>?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;
  • 屬性分布圖,From?Arbean.Wu

?

?

?

相關資料

  1. http://weblogs.asp.net/scottgu/archive/2008/11/24/new-asp-net-charting-control-lt-asp-chart-runat-quot-server-quot-gt.aspx
  2. http://zedgraph.org/wiki/index.php?title=Sample_Graphs
  3. 波浪線圖:http://zedgraph.org/wiki/index.php?title=Dual-Y_Demo
  4. RenderMode.ImageTag例子:http://zedgraph.org/wiki/index.php?title=Use_RenderMode.ImageTag_in_a_web_page
    RenderMode.RawImage例子:http://zedgraph.org/wiki/index.php?title=Use_RenderMode.RawImage_in_a_web_page
  5. ZedGraph webform 初學小例子 (代碼有詳細解釋)

    ZedGraph屬性

    一個簡單例子
  6. 開源圖表控件ZedGraph控件的研究(1)
  7. ZedGraph屬性\方法介紹
  8. http://zedgraph.sourceforge.net/samples.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458219.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458219.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458219.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[轉載]聊一聊人員培養

轉載自“搜狗測試”微信。 人員培養的痛點 大家在組內人員培養是否遇到了如下問題&#xff1a; 組員成長緩慢&#xff0c;無法達到預期 有時候感覺組員沒啥進步&#xff0c;有時候感覺組員挺好的&#xff0c;無法統一評價 腦子里都是組員的問題&#xff0c;無法集中精力做其他…

QCon2016舊金山大會焦點分享者確認

QCon舊金山大會是由InfoQ舉辦的連續十年的最大的英語會議&#xff0c;它將在今年11月7-9日在舊金山灣區舉行。\\在QCon大會涵蓋了一系列深入的技術&#xff0c;架構師、資深開發者所關注的國際事件&#xff0c;聚焦創新領域和軟件發展趨勢&#xff0c;QCon大會每年在美國、中國…

怎樣安裝兩個tomcat,怎樣配置

裝兩個tomcat 各自是6.0和7.0 可想執行tomcat6.0 可是實際上卻執行tomcat7.0 兩個版本號都是用解壓縮包 事實上就是不能執行tomcat6.0 僅僅能執行7.0 兩個環境變量都配置了。port也改了 還是不行 我遇到這樣的情況了&#xff0c;不知大家遇到沒有&#xff0c;例如以下是我的…

機器學習實戰之SVM

一引言&#xff1a;支持向量機這部分確實很多&#xff0c;想要真正的去理解它&#xff0c;不僅僅知道理論&#xff0c;還要進行相關的代碼編寫和測試&#xff0c;二者想和結合&#xff0c;才能更好的幫助我們理解SVM這一非常優秀的分類算法支持向量機是一種二類分類算法&#x…

模擬分頁效果

css部分&#xff1a; <style type"text/css">.main{width:800px;zoom:1;margin:0 auto;}.item{width:800px;overflow:hidden;}ul{padding:0;width:860px;zoom:1;}.clear{zoom:1;}.clear:after{content:"";display:block;height:0;clear:both;visibil…

XML基本概念及增刪改查操作

一、概念及特征&#xff1a; 1. XML 指可擴展標記語言(Extensible Markup Language)&#xff0c;用戶可以自己定義標簽。XML 被設計用來傳輸和存儲數據&#xff0c;而 HTML 用于格式化并顯示數據&#xff0c;并且HTML不能自定義標簽。 2. XML 文檔形成一種樹結構&#xff0c; X…

mysql 時間類型 datetime,timestamp

2019獨角獸企業重金招聘Python工程師標準>>> CURRENT_TIMESTAMP 的 timestamp 意思是 根據 mysql 的當前時間&#xff0c;使用mysql 的當前時間。 參考地址&#xff1a;http://blog.sina.com.cn/s/blog_67cc6e7d0100nrwk.html datetime 和 timestamp 都是保存時間格…

生成jsp驗證碼的代碼詳解(servlet版)

package util; import java.util.*; import java.io.*; import java.awt.*; import java.awt.image.*; import javax.servlet.*; import javax.servlet.http.*; import com.sun.image.codec.jpeg.*; /** 生成驗證碼圖片*/ public class ValidateCode exten…

機器學習中的交叉驗證(cross-validation)

from:https://blog.csdn.net/lhx878619717/article/details/49079785 交叉驗證&#xff08;Cross validation)&#xff0c;交叉驗證用于防止模型過于復雜而引起的過擬合. 有時亦稱循環估計&#xff0c; 是一種統計學上將數據樣本切割成較小子集的實用方法。于是可以先在一個子…

linux禁止ping

執行此命令 &#xff1a;echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 可以禁止ping一、如果沒有iptables禁止pingecho 1 > /proc/sys/net/ipv4/icmp_echo_igore_all #開啟echo 0 > /proc/sys/net/ipv4/icmp_echo_igore_all #關閉二、利用iptables規則禁pingi…

python3字符串屬性(二)

1、S.isdecimal() -> bool Return True if there are only decimal characters in S, False otherwise. 字符串如果是十進制&#xff0c;返回True。 2、S.isdigit() -> bool Return True if all characters in S are digits and there is at least one character …

使用libsvm中的svm_cross_validation函數進行交叉驗證

from:https://blog.csdn.net/tao1107291820/article/details/51581322 在libsvm的使用中&#xff0c;為了得到更好的c、gama參數&#xff0c;可以通過多次使用libsvm中的svm_cross_validation函數進行參數尋優&#xff0c;下面是svm_cross_validation的一種使用方法&#xff1…

JavaScript中eval()函數

eval調用時&#xff0c;實例為eval( "( javascript代碼 )" )&#xff0c; eval() 函數可將字符串轉換為代碼執行&#xff0c;并返回一個或多個值。轉載于:https://www.cnblogs.com/lxcmyf/p/5703640.html

輕松談話:談話的力量

如何與她人搭話&#xff1f;&#xff1f; 第一&#xff1a;給別人一個好印象 1、環境&#xff1a;通過共同環境來激發興趣&#xff0c;比如&#xff1a;在球場&#xff0c;你覺得誰會贏。 2、對方:多數人喜歡談論自己。 3、自己&#xff1a;主動表明意圖&#xff0c;要真誠。 第…

函數的二義性與函數對象的傳遞問題(通過實現vector的to_string示例)

許多時候&#xff0c;我們想要直接打印容器的內容&#xff0c;比如 std::vector<int> a { 1, 2, 3 }; 可以打印出[1, 2, 3]。 參考標準庫&#xff0c;可以寫出一個帶有迭代器的to_string函數&#xff1a; template <typename Iter, typename Func> std::string to…

libSVM介紹(二)

from&#xff1a;https://blog.csdn.net/carson2005/article/details/6539192 鑒于libSVM中的readme文件有點長&#xff0c;而且&#xff0c;都是采用英文書寫&#xff0c;這里&#xff0c;我把其中重要的內容提煉出來&#xff0c;并給出相應的例子來說明其用法&#xff0c;大家…

四則運算題2

本題新學知識點&#xff1a; itoa函數 char *itoa( int value, char *string,int radix);[1]原型說明&#xff1a;value&#xff1a;欲轉換的數據。string&#xff1a;目標字符串的地址。radix&#xff1a;轉換后的進制數&#xff0c;可以是10進制、16進制等。程序實例:#includ…

c++調用Libsvm

libSVM中的readme中文版&#xff1a;http://blog.csdn.net/carson2005/article/details/6539192 LibSVM的package中的Readme文件中介紹了怎樣具體的使用LibSvm&#xff0c;可以在Dos下以命令形式進行調用&#xff0c;也可以用程序包中提供的GUI程序Svm-toy進行圖形化的操作。sv…

STL -set

轉載自&#xff1a;http://blog.csdn.net/LYHVOYAGE/article/details/22989659 set集合容器實現了紅黑樹&#xff08;Red-Black Tree&#xff09;的平衡二叉檢索樹的的數據結構&#xff0c; 在插入元素時&#xff0c;它會自動調整二叉樹的排列&#xff0c;把該元素放到適當的位…

【機器學習實戰之一】:C++實現K-近鄰算法KNN

本文不對KNN算法做過多的理論上的解釋&#xff0c;主要是針對問題&#xff0c;進行算法的設計和代碼的注解。 KNN算法&#xff1a; 優點&#xff1a;精度高、對異常值不敏感、無數據輸入假定。 缺點&#xff1a;計算復雜度高、空間復雜度高。 適用數據范圍&#xff1a;數值…