<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    系列1、2中介紹過的內容在這里不會贅述。
    原理同面1、2基本一樣。

    ?

    ?1 <! DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
    ?2 < html? xmlns ="http://www.w3.org/1999/xhtml" >
    ?3 < head >
    ?4 < meta? http-equiv ="Content-Type" ?content ="text/html;?charset=utf-8" ? />
    ?5 < title > TEST </ title >
    ?6 < script? type ="text/javascript" ?src ="wz_jsgraphics.js" ></ script >
    ?7 < script? type ="text/javascript" ?src ="line.js" ></ script >
    ?8 </ head >
    ?9 < body >
    10 < p > 1.線圖 </ p >
    11 < div? id ="LineDiv" ?style ="position:relative;height:200px;width:300px;" ></ div >
    12 < script? language ="javascript" >
    13 ???? var ?y = ? new ?Array?();
    14 ?????y[ 0 ]? = ? 16000 ;
    15 ?????y[ 1 ]? = ? 1000 ;
    16 ?????y[ 2 ]? = ? 20000 ;
    17 ?????????y[ 3 ]? = ? 100 ;
    18 ?????y[ 4 ]? = ? - 500 ;
    19 ?????y[ 5 ]? = ? 9000 ;
    20 ???? var ?x? = ? new ?Array?();
    21 ????x[ 0 ]? = ? " a " ;
    22 ????x[ 1 ]? = ? " b " ;
    23 ????x[ 2 ]? = ? " c " ;
    24 ?????x[ 3 ]? = ? " aa " ;
    25 ?????x[ 4 ]? = ? " bb " ;
    26 ?????x[ 5 ]? = ? " dd " ;
    27 ???? var ?myline? = ? new ?Line( " LineDiv " );
    28 ????myline.drawXYLine(y,x);
    29 ???? // myline.clearLine();
    30
    </ script > ????????
    31 </ body >
    32 </ html >

    效果圖:
    line.PNG

    ??1 /* ************更多技術文章請訪問:http://www.tkk7.com/JAVA-HE****************
    ??2 ?*
    ??3 ?*????文件名:line.js?V?1.01
    ??4 ?*????
    ??5 ?*????作??者:何昌敏
    ??6 ?*
    ??7 ?*????時??間:2007-7
    ??8 ?*
    ??9 ?*????描??述:繪制坐標曲線圖
    ?10 ?*
    ?11 ?*????備??注:
    ?12 ?*????????????????1.實現了根據所提供數據,自動標刻y軸坐標。
    ?13 ?*????????????????2.實現了圖像清除。
    ?14 ?*????????????????3.調整startx?starty能實現整體位置調整。
    ?15 ?*
    ?16 ?*????感??謝:Walter?Zorn提供了API?——wz_jsgraphics.js?v.?3.01。
    ?17 ?*????????????????
    ?18 *************更多技術文章請訪問:http://www.tkk7.com/JAVA-HE*************** */

    ?19
    ?20 function ?Line(obj)
    ?21 {
    ?22 ???? this .jg? = ? new ?jsGraphics(obj);?
    ?23 ???? var ?colors? = ? new ?Array();
    ?24 ????colors[ 0 ]? = ? " #0066FF " ;
    ?25 ????colors[ 1 ]? = ? " #FF6633 " ;
    ?26 ????colors[ 2 ]? = ? " #9900FF " ;
    ?27 ????colors[ 3 ]? = ? " #FF0066 " ;
    ?28 ????colors[ 4 ]? = ? " #066600 " ;
    ?29 ????colors[ 5 ]? = ? " #006633 " ;
    ?30 ????colors[ 6 ]? = ? " #33FFFF " ;
    ?31 ????colors[ 7 ]? = ? " #000000 " ;
    ?32 ????colors[ 8 ]? = ? " #FFFF00 " ;
    ?33 ????colors[ 9 ]? = ? " #000033 " ;
    ?34 ????colors[ 10 ]? = ? " #CCFFFF " ;
    ?35 ????colors[ 11 ]? = ? " #666666 " ;
    ?36 ???? this .start_x? = ? 40 ;???????? // 應大于等于y_str_width
    ?37 ???? this .y_str_width = 40 ;???? // 坐標系的左邊距
    ?38 ???? this .x_str_tom? = 10 ;???????? // x軸文字?距離坐標系底部距離。
    ?39 ???? this .start_y? = ? 20 ;???????? // >=this.ArrowLength*2?箭頭的高度
    ?40 ???? this .width = 200 ;
    ?41 ???? this .height = 120 ;
    ?42 ???? this .y_line_num? = ? 5 ;
    ?43 ????
    ?44 ???? this .IsDrawArrow? = ? true ;
    ?45 ???? this .ArrowLength? = 6 ;
    ?46 ????
    ?47 ???? this .drawXYLine? = ? function ?(_y,_x)
    ?48 ???? {
    ?49 ???????? var ?y_length? = ?_y.length;
    ?50 ???????? var ?x_length? = ?_x.length;
    ?51 ???????? if (y_length != x_length)
    ?52 ???????? {
    ?53 ????????????alert( " X?and?Y?length?of?inconsistencies,?errors?parameters. " );
    ?54 ???????????? return ;
    ?55 ????????}

    ?56 ???????? var ?y_line_distance? = ?Math.round( this .height / this .y_line_num);
    ?57 ???????? var ?x_line_distance? = ?Math.round( this .width / x_length);
    ?58 ????????
    ?59 ???????? this .jg.drawLine( this .start_x, this .start_y + this .height, this .start_x + this .width, this .start_y + this .height); // x
    ?60 ???????? this .jg.drawLine( this .start_x, this .start_y + this .height, this .start_x, this .start_y); // y
    ?61 ???????? this .jg.setStroke(Stroke.DOTTED);????
    ?62 ???????? var ?_y_copy? = ?_y.concat();
    ?63 ???????? var ?temp? = ?_y;
    ?64 ????????temp.sort( function ?AscSort(x,?y)?
    ?65 ???????? {
    ?66 ?????????? return ?x? == ?y? ? ? 0 ?:?(x? > ?y? ? ? 1 ?:? - 1 );
    ?67 ????????}

    ?68 ????????);
    ?69 ???????? var ?y_max2y_min? = ?temp[x_length - 1 ] - temp[ 0 ];
    ?70 ???????? var ?y_min? = temp[ 0 ];
    ?71 ???????? var ?y_value_distance? = ?y_max2y_min / this .y_line_num;
    ?72 ???????? for ( var ?i = 0 ;i < this .y_line_num;i ++ )
    ?73 ???????? {
    ?74 ???????????? var ?y_item? = ? this .start_y + this .height - (i + 1 ) * y_line_distance;
    ?75 ???????????? this .jg.drawLine( this .start_x,y_item, this .start_x + this .width,y_item);
    ?76 ???????????? var ?y_v? = ?Math.round(y_value_distance * (i + 1 ) + y_min);
    ?77 ???????????? this .jg.drawString(y_v, this .start_x - this .y_str_width,y_item);
    ?78 ????????}

    ?79 ???????? for (i = 0 ;i < x_length;i ++ )
    ?80 ???????? {
    ?81 ???????????? this .jg.setStroke( - 1 );
    ?82 ???????????? this .jg.setColor( " #000000 " );
    ?83 ???????????? var ?x_item_end? = ? this .start_x + x_line_distance * (i + 1 );
    ?84 ???????????? this .jg.drawLine(x_item_end, this .start_y + this .height,x_item_end, this .start_y);
    ?85 ???????????? this .jg.drawString(_x[i],x_item_end, this .start_y + this .height + 10 );
    ?86 ????????}

    ?87 ???????? for (i = y_length;i > 1 ;i -- )
    ?88 ???????? {
    ?89 ????????????
    ?90 ????????????
    ?91 ???????????? this .jg.setStroke( 2 );
    ?92 ???????????? this .jg.setColor( " #FF0000 " );
    ?93 ????????????
    ?94 ???????????? var ?x_temp_1? = ? this .start_x + x_line_distance * (i);
    ?95 ???????????? var ?x_temp_2? = ? this .start_x + x_line_distance * (i - 1 );
    ?96 ???????????? // alert(_y_copy[i-1]);
    ?97 ???????????? // alert(y_min);
    ?98 ???????????? // alert(y_max2y_min);
    ?99 ???????????? var ?y_temp_1? = ?Math.round( this .height - this .height * (_y_copy[i - 1 ] - y_min) / y_max2y_min + this .start_y);
    100 ???????????? var ?y_temp_2? = ?Math.round( this .height - this .height * (_y_copy[i - 2 ] - y_min) / y_max2y_min + this .start_y);
    101 ???????????? this .jg.drawLine(x_temp_1,y_temp_1,x_temp_2,y_temp_2);????????????
    102 ????????}

    103 ???????? if ( this .IsDrawArrow)
    104 ???????? {
    105 ???????????? this .jg.setStroke( 1 );????
    106 ???????????? this .jg.setColor( " #000000 " );
    107 ???????????? this .jg.drawLine( this .start_x - this .ArrowLength, this .start_y, this .start_x, this .start_y - 2 * this .ArrowLength);
    108 ???????????? this .jg.drawLine( this .start_x + this .ArrowLength, this .start_y, this .start_x, this .start_y - 2 * this .ArrowLength);
    109 ???????????? this .jg.drawLine( this .start_x, this .start_y, this .start_x, this .start_y - 2 * this .ArrowLength);
    110 ???????????? this .jg.drawLine( this .start_x + this .width, this .start_y + this .height - this .ArrowLength, this .start_x + this .width + 2 * this .ArrowLength, this .start_y + this .height);
    111 ???????????? this .jg.drawLine( this .start_x + this .width, this .start_y + this .height + this .ArrowLength, this .start_x + this .width + 2 * this .ArrowLength, this .start_y + this .height);
    112 ???????????? this .jg.drawLine( this .start_x + this .width, this .start_y + this .height, this .start_x + this .width + 2 * this .ArrowLength, this .start_y + this .height);
    113 ????????}

    114 ???????? this .jg.paint();
    115 ????}
    ;
    116 ??? this .clearLine? = ? function ?()
    117 ??? {
    118 ??????????? this .jg.clear();????????
    119 ???}
    ;
    120 }


    總結遇到過的一些問題,一數組排序
    總結如下:
    http://www.tkk7.com/JAVA-HE/archive/2007/07/01/127304.html

    二數組排序后怎么取原來沒有排序的數組
    eg:

    ?1 < html >
    ?2 < body >
    ?3 ? < script? type ="text/javascript" >
    ?4 ?? function ?AscSort(x,?y)? {
    ?5 ?? return ?x? == ?y? ? ? 0 ?:?(x? > ?y? ? ? 1 ?:? - 1 );
    ?6 }

    ?7 ? var ?y? = ? new ?Array( 36000 , 200 , 500 , 10100 );
    ?8 ? var ?te? = ?y;
    ?9 ?te.sort(AscSort);
    10 ?alert(te);
    11 ?alert(y);
    12
    </ script >
    13 </ body >
    14 </ html >

    ?

    如上程序,我對數組te排序了。但是我又要用到沒有排序的數組y,但是程序的結果是y也排序了。有什么方法嗎?
    問題解決:利用concat方法,實現了數組的拷貝。

    后記:這種方式的確實現了將數據庫中動態數據以圖表形式顯示在頁面上。程序以javascript實現,利用ajax將實現更好的用戶體驗。這樣做減輕了服務端的壓力。不過,這種方式的確定是客戶端變得龐大。而且其實現原理很恐怖,基本是div實現點陣字原理(一點點畫上去的)來搞的。效率就顯得不夠快。不過我在項目用這中方式也做完一個項目了。呵呵,和原來用jfreechart比較,感覺jfreechart (當然完全可以利用cewolf來簡化操作)不爽的地方是他總是先生成圖。然后利用src來顯示的。其實效率也不怎么高。不過服務器好的話,客戶端就輕松。無非就是胖客戶端和胖服務器的比較,立場都不同了。

    程序內部注釋較少,代碼很少。

    posted on 2007-07-01 04:31 -274°C 閱讀(9907) 評論(11)  編輯  收藏


    FeedBack:
    # re: javascript 在客戶端繪制圖表系列三——xy坐標曲線圖
    2007-08-10 11:51 | 柱柱
    怎么才能動態實現啊?  回復  更多評論
      
    # re: javascript 在客戶端繪制圖表系列三——xy坐標曲線圖[未登錄]
    2007-08-10 13:20 | -274°C
    @柱柱

    動態的話,從數據庫取一次再繪制就動態了。結合當前的AJAX 也許你能做出更多漂亮的效果。  回復  更多評論
      
    # re: javascript 在客戶端繪制圖表系列三——xy坐標曲線圖
    2007-08-29 16:22 | 柱柱
    老板說這個功能太簡單了,能不能實現打印?
    或者你知道什么好點的,功能比較強點的?  回復  更多評論
      
    # re: javascript 在客戶端繪制圖表系列三——xy坐標曲線圖[未登錄]
    2007-08-29 20:56 | -274°C
    @柱柱
    js寫的是不能答應,因為他實現原理是用div模擬了點陣,無非就是div加了背景顏色……你打印肯定什么都沒有。

    你看看我總結的這篇文章
    http://www.tkk7.com/JAVA-HE/archive/2007/05/08/115813.html
    里面有不少報表,非js方面的也有。如果你不用jsp,或者你只考慮兼容IE,里面有個非常炫的能用。VML吧?  回復  更多評論
      
    # re: javascript 在客戶端繪制圖表系列三——xy坐標曲線圖
    2007-11-02 11:19 | JiMi
    要實現在兩條曲線呢,如何實現  回復  更多評論
      
    # re: javascript 在客戶端繪制圖表系列三——xy坐標曲線圖[未登錄]
    2007-11-03 15:30 | Aaron
    呵呵,不若用jfreechart實在啊。  回復  更多評論
      
    # re: javascript 在客戶端繪制圖表系列三——xy坐標曲線圖
    2007-11-03 17:01 | -274
    @JiMi
    這里我只是寫了個demo,根據這個畫線方法,再畫線。也很容易了。
    @Aaron
    jfreechart 是服務端任務。而javascript是客戶端的來完成。
      回復  更多評論
      
    # re: javascript 在客戶端繪制圖表系列三——xy坐標曲線圖
    2007-11-03 17:03 | -274
    @柱柱

    其實方法很多,你如果用服務端技術,那么可以用java生成bufferedimage,那么答應圖片就行。當然php也一樣的道理。

    而作為胖客戶端的話,可以根據判斷選擇svg、或者VML。那樣生成的報表也是可以答應的。  回復  更多評論
      
    # re: javascript 在客戶端繪制圖表系列三——xy坐標曲線圖
    2007-12-10 16:02 | tianhua876543
    KKK  回復  更多評論
      
    # re: javascript 在客戶端繪制圖表系列三——xy坐標曲線圖[未登錄]
    2010-04-02 10:00 | aa
    將div換成span 就可以了啊  回復  更多評論
      
    # re: javascript 在客戶端繪制圖表系列三——xy坐標曲線圖
    2012-03-15 16:45 | HU Ruifemg
    為什么我運行不了啊  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    常用鏈接

    留言簿(21)

    隨筆分類(265)

    隨筆檔案(242)

    相冊

    JAVA網站

    關注的Blog

    搜索

    •  

    積分與排名

    • 積分 - 914351
    • 排名 - 40

    最新評論

    主站蜘蛛池模板: 精品亚洲成在人线AV无码| 亚洲制服丝袜一区二区三区| 蜜臀亚洲AV无码精品国产午夜.| 亚洲免费在线视频播放| 亚洲美女激情视频| 1000部拍拍拍18勿入免费凤凰福利 | 国产免费一区二区视频| 亚洲一区二区三区影院| 国产成人免费ā片在线观看老同学| 亚洲一区二区三区在线观看精品中文 | 中文字幕无码日韩专区免费| 久久久久久久综合日本亚洲| 国产午夜无码精品免费看动漫| 亚洲精品无码专区在线在线播放| a级毛片黄免费a级毛片| 亚洲视频国产精品| 午夜老司机免费视频| 人妻无码中文字幕免费视频蜜桃| 精品亚洲视频在线观看| 国产精品99精品久久免费| 91亚洲视频在线观看| 国产大片91精品免费观看男同| 日日躁狠狠躁狠狠爱免费视频| 亚洲欧洲日产国码av系列天堂 | 成年女人色毛片免费看| 色屁屁www影院免费观看视频| 亚洲免费观看视频| 精品福利一区二区三区免费视频 | 亚洲色成人WWW永久网站| 久久久久免费看成人影片| 狠狠色香婷婷久久亚洲精品| 可以免费观看的一级毛片| 中文字幕在线免费观看视频| 亚洲成a人片在线网站| 国产精品极品美女免费观看| 91视频免费网站| 亚洲综合精品伊人久久| 中文字幕亚洲一区| 成年人在线免费看视频| 中文字幕无码毛片免费看| 亚洲综合色丁香婷婷六月图片 |