`
loyalbluer
  • 浏览: 41230 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

js在客户端绘制XY曲线图

阅读更多
<!  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 >


================================================================
 /**/   /*  ************更多技术文章请访问:http://www.blogjava.net/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.blogjava.net/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 } 
分享到:
评论

相关推荐

    D11.威纶通XY曲线图示例程序.rar

    威纶通触摸屏支持多种编程语言和开发环境,例如其专有的MT Designer软件,允许用户创建复杂的用户界面,包括XY曲线图的绘制。这个示例程序可能包括了以下几个关键知识点: 1. **MT Designer软件使用**:MT Designer...

    威纶通触摸屏----XY曲线制作

    * 参考线:最多可设置 4 条参考线在 XY 曲线图上,并可自行设置参考线的色彩及数值。若勾选“上下限取自寄存器”时,可设置改变参考线的上下限值。 XY 曲线是一种非常有用的工具,可以帮助用户快速了解和分析数据...

    GDI+绘制曲线图_gentle7gp_gdi曲线_GDI+绘制动态曲线图_

    在本文中,我们将深入探讨如何使用GDI+(Graphics Device Interface Plus)在Windows Forms应用程序中绘制动态曲线图。GDI+是.NET Framework提供的一种强大的图形处理API,它允许程序员创建和控制各种图形元素,包括...

    QT用Qpainter绘制实时曲线图

    在这个特定的场景中,我们关注的是如何使用QPainter来绘制实时曲线图。 首先,让我们了解QPainter的基本用法。QPainter对象通常在开始绘画时创建,并在完成绘画后释放。为了绘制曲线,我们需要一个QGraphicsView或...

    JS绘制曲线图源码

    在JavaScript编程中,绘制曲线图是一项常见的需求,特别是在创建数据可视化应用时。"JS绘制曲线图源码"可能包含了一套用于动态展示数据的代码实现。这篇文章将详细讲解如何使用JavaScript来绘制曲线图,以及涉及的...

    android曲线图的绘制

    在Android开发中,有时我们需要创建动态的、可定制的曲线图来展示数据,这通常涉及到自定义View的绘制。这个“android曲线图的绘制”是一个关于如何在Android平台上实现曲线图表的小型示例项目。该项目可能包含了一...

    java使用POI插件绘制表格曲线图

    在“java使用POI插件绘制表格曲线图”这个主题中,我们将深入探讨如何使用POI来在Excel工作表中绘制曲线图表。Apache POI提供了一个API,使得开发者可以方便地创建图表,包括曲线图,而无需依赖其他外部插件。 首先...

    VB 实现绘制曲线图控件

    实时曲线图在监控系统、数据分析和科学实验中非常有用,因为它能立即反映出数据的变化。这类控件通常需要处理大量的数据更新,并且要确保流畅的刷新速度。开发者可能需要学习如何高效地更新图表,处理内存管理,以及...

    labview在一个XY图中画多条曲线

    3. 使用“绘制XY数据”函数,将时间数组(X值)和每相的正弦值数组(Y值)传入,这将在XY图上绘制一条曲线。 4. 在循环中重复上述步骤,改变相位参数以得到不同相位的正弦波形。 5. 最后,确保设置合适的图表属性,...

    C#的GDI+绘制曲线图

    本项目“C#的GDI+绘制曲线图”聚焦于利用GDI+来实现动态绘制曲线图表的功能,这对于数据分析、实时监控或其他需要图形化展示数据的应用场景非常有用。下面我们将深入探讨如何使用GDI+来绘制曲线图,并讨论项目中的...

    VC++绘制曲线图趋势图

    在"VC++绘制曲线图趋势图"这个主题中,开发者可能需要掌握以下关键知识点: 1. **GDI+基础**:理解GDI+的基本概念,包括Graphics、Pen、Brush、Rectangle等对象的使用,以及颜色、线型、填充样式等设置。 2. **...

    基于QT的曲线图绘制

    在本文中,我们将深入探讨如何基于QT框架进行曲线图的绘制。QT是一个强大的跨平台应用程序开发框架,广泛用于创建桌面、移动以及嵌入式设备的应用。在这个特定的项目"基于QT的曲线图绘制"中,开发者没有依赖外部的...

    利用贝赛尔曲线函数在arcgis图层中绘制平滑曲线

    利用贝赛尔曲线函数在arcgis图层中绘制平滑曲线,通过地图上的几个控制点,在客户端绘制平滑曲线,可用于客户端绘制等值线

    使用D3.js库绘制曲线图

    在本例中,我们将探讨如何使用D3.js来绘制曲线图。 首先,我们需要了解XML文件的作用。XML(可扩展标记语言)是一种用于存储和传输结构化数据的标准格式。在这个场景中,XML文件很可能包含了用来绘制曲线图的数据点...

    C#绘制实时曲线图Demo

    在C#编程环境中,实时曲线图的绘制是一个常见的需求,特别是在数据分析、监控系统或图形用户界面(GUI)应用中。本教程将详细讲解如何利用C#的Chart控件来实现这个功能,尤其适合初学者入门。 首先,让我们了解C# ...

    DrawGraph_MFC绘制曲线图、饼状图、柱状图_源码

    在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库来绘制曲线图、饼状图和柱状图。MFC 是一个C++类库,它为Windows应用程序开发提供了一种方便的方式,尤其在图形用户界面(GUI)的创建上。 首先...

    CreateCurve.rar_C#动态曲线图_csharp 曲线_动态 CSharp_绘制三维曲线_绘制曲线图

    在C#编程中,创建动态曲线图是一种常见的需求,特别是在数据可视化、数据分析和科学计算等领域。本项目"CreateCurve.rar"提供了一种方法,利用C#来实现动态曲线的绘制,支持多条曲线同时显示,并且能够进行平面与三...

    MFC动态绘制曲线图-HightSpeedChart实现

    文章地址:http://blog.csdn.net/czyt1988/article/details/20136895 《绘图控件第五讲——绘制动态曲线》 介绍MFC常用绘图控件TeeChart和CChartCtrl绘制动态曲线的方法

Global site tag (gtag.js) - Google Analytics