在Asp.net页面中实现数据饼图

2023-11-11

        ASP.NET之所以能够在客户端浏览器中形成各种数据图片,是因为在ASP.NET中提供了绘图功能,具体的作法是先在服务器端创建一个Bitmap实例,然后利用ASP.NET中提供的绘图功能,按照要生成的图片的模样,进行绘制,最后把绘制好的实例以数据流的方式传送到客户端的浏览器上,并形成图片显示出来。本文要介绍的在ASP.NET页面中实现数据饼图采用的基本也是这种方法。饼图有时称为"Pie"图,本文要实现的数据饼图模样具体如图01所示:

                       图01:在ASP.NET页面中产生的数据饼图

一.本文程序设计和运行的软件环境:

  (1).微软公司视窗2000服务器版。
  (2).Visual Studio .Net正式版,.Net FrameWork SDK版本号3705。
  (3).MDAC 2.6(Microsoft Data Acess Component)以上版本。

二.数据字典:

        为了方便起见,本文选择的数据库类型为本地数据库--Access 2000,如果你使用的是其他数据库类型,只需对下面介绍的程序中的关于数据库连接的代码进行相应的修改就可以了。Access数据库名称为"db2.mdb",在此数据库中只定义了一张数据表"MonthSale",此表的结构如表01所示:

                                                               表01:MonthSale数据表的结构

在定义完"db2.mdb"数据库中的"MonthSale"数据表后,在MonthSale数据表中按照表02所示添加记录:

                                                                表02:MonthSale数据表中的记录情况

在MonthSale数据表中添加完这12条记录后,保存"db2.mdb"数据库到C盘的根目录中。

下面就要解决根据从数据库中读取的数据绘制Pie图的方法。

(1).绘制数据Pie图的实现方法:

  图01所示的Pie图看似是由一个圆形按照从数据库中得到数据值的大小分割而成的,其实在具体实现时并非如此,图01所示的Pie图其实由许多根据从数据库中数值大小,绘制相应的扇型,并由这些扇型组合而成的

(2).简介ASP.NET页面中绘制扇型要使用到的类及其方法:

  在本文和前文中,在ASP.NET页面中实现绘图功能主要使用的是Graphics类,Graphics类被封装在命名空间"System.Drawing"中。Graphics类中定义了很多方法和属性,这些方法和属性都与绘图有关,Graphics类中的常用成员具体可参阅表01和表02,表01是Graphics类中的常用方法及其说明,表02是Graphics类中常用属性及其说明:

方法 说明
Clear 清除整个绘图面并以指定背景色填充。
Dispose 释放由此Graphics对象使用的所有资源。
DrawArc 绘制一段弧线,它表示由一对坐标、宽度和高度指定的椭圆部分。
DrawEllipse 绘制一个由边框定义的椭圆。
DrawIcon 在指定坐标处绘制由指定的Icon对象表示的图像。
DrawIconUnstretched 绘制指定的Icon对象表示的图像,而不缩放该图像。
DrawImage 在指定位置并且按原始大小绘制指定的Image对象。
DrawImageUnscaled 在坐标对所指定的位置并且按其原始大小绘制指定的Image对象。
DrawLine 绘制一条连接由坐标对指定的两个点的线条。
DrawLines 绘制一系列连接一组Point结构的线段。
DrawPie 绘制一个扇形,该扇形由一个坐标对、宽度和高度以及两条射线所指定的椭圆定义。
DrawPolygon 绘制由一组Point结构定义的多边形。
DrawRectangle 绘制由坐标对、宽度和高度指定的矩形。
DrawRectangles 绘制一系列由Rectangle结构指定的矩形。
DrawString 在指定位置并且用指定的Brush和Font对象绘制指定的文本字符串。
FillClosedCurve 填充由Point结构数组定义的闭合基数样条曲线的内部。
FillEllipse 填充边框所定义的椭圆的内部,该边框由一对坐标、一个宽度和一个高度指定。
FillPie 填充由一对坐标、一个宽度、一个高度以及两条射线指定的椭圆所定义的扇形区的内部。
FillPolygon
填充Point结构指定的点数组所定义的多边形的内部。
FillRectangle 填充由一对坐标、一个宽度和一个高度指定的矩形的内部。
FillRectangles 填充由Rectangle结构指定的一系列矩形的内部。
FillRegion 填充Region 对象的内部。
Flush 强制执行所有挂起的图形操作并立即返回而不等待操作完成。
FromHdc 从设备上下文的指定句柄创建新的Graphics对象。
FromHwnd 从窗口的指定句柄创建新的Graphics对象。
FromImage 从指定的Image对象创建新Graphics对象
GetHdc 获取与此Graphics对象关联的设备上下文的句柄。
ReleaseHdc 释放通过以前对此Graphics对象GetHdc方法的调用获得的设备上下文句柄。
ResetClip 将此Graphics对象的剪辑区域重置为无限区域。
ResetTransform 将此Graphics对象的全局变换矩阵重置为单位矩阵。
   
   

                                                                             表01:Graphics类中的常用方法及其说明

 

在本文中使用最多,也是最重要的方法就是:FillPie和DrawPie方法。这二个方法的具体使用方法,在下文中又详细介绍。

属性 说明
Clip 获取或设置Region对象,该对象限定此Graphics对象的绘图区域。
ClipBounds 获取RectangleF结构,该结构限定此Graphics对象的剪辑区域。
DpiX 获取此Graphics对象的水平分辨率。
DpiY 获取此Graphics对象的垂直分辨率。
PageScale 获取或设置此Graphics对象的全局单位和页单位之间的比例。
PageUnit 获取或设置用于此Graphics对象中的页坐标的度量单位。
PixelOffsetMode 获取或设置一个值,该值指定在呈现此Graphics对象的过程中像素如何偏移。
RenderingOrigin 为抵色处理和阴影画笔获取或设置此Graphics对象的呈现原点。
SmoothingMode 获取或设置此Graphics对象的呈现质量。
TextRenderingHint 获取或设置与此Graphics对象关联的文本的呈现模式。
Transform 获取或设置此Graphics对象的全局变换。
VisibleClipBounds 获取或设置此Graphics对象的可见剪辑区域的边框。
   
   

                                                                       表02:Graphics类中的常用属性及其说明

 

(3).利用FillPie和DrawPie方法绘制扇型的具体方法:
  DrawPie方法功能是绘制一个扇型,下面是 DrawPie方法的一种调用语法,此语法也是本文中主要的调用方式,具体如下:
  public void DrawPie ( Pen , float , float , float , float , float , float ) ;
  此种DrawPie调用方法是由七个参数组成,这七个参数的具体说明如下:
  第一个参数:定义绘制扇型的画笔类型;
  第二和第三个参数:定义扇型的坐标;
  第四和第五个参数:定义组成扇型的二个射线的长度;
  第六和第七个参数:定义扇型的开始角度和扇型旋转的角度大小。其中把X坐标的正方向定为0度角,计算扇型的开始角度的按照顺时针方向旋转,最先到达的扇型的那条射线和0度角之间的夹角。

  下列代码就是在ASP.NET页面中绘制一个扇型:

Bitmap bm = new Bitmap ( 600 , 300 ) ;
//创建一个长度为600,宽带为300的Bitmap实例
Graphics g ;
g = Graphics.FromImage ( bm ) ;
//由此Bitmap实例创建Graphic实例
g . Clear ( Color . Snow ) ;
g.DrawPie ( Pens.Red , 50 , 50 , 150 , 150 , 0 , 30 ) ; 

四.ASP.NET页面中实现数据Pie图实现步骤

  在实现数据Pie图之前,首先要确保在C盘的根目录存在"db.mdb"数据库,并且此数据库已经设定完毕,并且存在《在ASP.NET页面中实现数据棒图》一文中的数据。下面是ASP.NET实现数据Pie图的具体步骤,开发工具使用的是Visual Studio .Net,采用的是C#语言。

       1. 启动Visual Studio .Net。
  2. 选择菜单【文件】|【新建】|【项目】后,弹出【新建项目】对话框。
  3. 将【项目类型】设置为【Visual C#项目】。
  4. 将【模板】设置为【ASP.NET Web 应用程序】。
  5. 在【位置】的文本框中输入"http://localhost/Pie"。然后单击【确定】按钮,这样在Visual Studio .Net就会在当前项目文件所在目录中建立一个名称为"Pie"文件夹,里面存放是此项目的项目文件,项目中的其他文件存放的位置是计算机Internet信息服务的默认的Web站点所在的目录中新建的一个名称为"WebPieDemo"的文件夹中
     6. 把Visual Studio .Net的当前窗口切换到WebForm的代码编辑窗口,即:WebForm1.aspx.cs文件的编辑窗口。
  7. 在WebForm1.aspx.cs文件首部,用下列代码替换WebForm1.aspx.cs中导入命名空间的代码:

//下面程序中使用的ImageFormat类所在的命名空间
using System.Drawing.Imaging ;
//下面程序中使用到关于数据库方面的类所在的命名空间
using System.Data.OleDb ;

        8. WebForm1.aspx.cs文件中的Page_Load事件处理代码中添加下列代码,下列代码的作用是打开数据库,读取数据,并以此数据形成数据Pie图:

private void Page_Load(object sender, System.EventArgs e)
  2        {
  3            // 在此处放置用户代码以初始化页面
  4            string sRouter = "c:\\db2.mdb" ;
  5
  6            //获得当前Access数据库在服务器端的绝对路径
  7            string strCon = " Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + sRouter ;
  8
  9            //创建一个数据库连接
 10            OleDbConnection myConn = new OleDbConnection ( strCon ) ;
 11            string strCom = " SELECT YF ,SL FROM MonthSale ORDER BY YF" ;
 12            myConn.Open ( ) ;
 13            OleDbCommand myCommand = new OleDbCommand ( strCom , myConn ) ;
 14            OleDbDataReader myOleDbDataReader = myCommand.ExecuteReader ( ) ;
 15            //创建OleDbDataReader实例,并以此实例来获取数据库中各条记录数据
 16
 17            int [ ] iXiaoSH = new int [ 12 ] ;
 18            //定义一个数组,用以存放从数据库中读取的销售数据
 19
 20            string [ ] sMoth = new string [ 12 ] ;
 21            //定义一个数组,用以存放从数据库中读取的销售月份
 22
 23            int iIndex = 0 ;
 24            while ( myOleDbDataReader.Read ( ) ) 
 25            {
 26                iXiaoSH [ iIndex ] = myOleDbDataReader.GetInt32 ( 1 ) ;
 27                sMoth [ iIndex ] = myOleDbDataReader.GetInt32 ( 0 ) . ToString() + "月" ;
 28                iIndex++ ;
 29            }
 30            //读取Table01数据表中的各条数据,并存放在先前定义的二个数组中
 31
 32            myConn . Close ( ) ;
 33            myOleDbDataReader . Close ( ) ;
 34 
 35            Bitmap bm = new Bitmap ( 600 , 300 ) ;
 36            //创建一个长度为600,宽带为300的Bitmap实例
 37
 38            Graphics g ;
 39            g = Graphics.FromImage ( bm ) ;
 40            g . Clear ( Color . Snow ) ;
 41            g . DrawString ( " ××公司××××年度销售情况一览表" , new Font ( "宋体" , 16 ) , Brushes . Black , new Point ( 5 , 5 ) ) ;
 42            //在绘画图面的指定位置,以指定的字体、指定的颜色绘制指定的字符串。即为图表标题
 43
 44            //以下代码是是实现图01中的右上部区域
 45            //以上是在图01中为下面绘制定位
 46            Point myRec = new Point ( 515 , 30 ) ;
 47            Point myDec = new Point ( 540 , 30 ) ;
 48            Point myTxt = new Point ( 565 , 30 ) ;
 49            g . DrawString ( "单位:万套" , new Font ( "宋体" , 9 ) , Brushes . Black , new Point ( 515 , 12 ) ) ;
 50            for ( int i = 0 ; i < sMoth.Length ; i++ ) 
 51            {
 52                g . FillRectangle ( new SolidBrush ( GetColor ( i ) ) , myRec . X , myRec . Y , 20 , 10 ) ;
 53                //填充小方块
 54
 55                g . DrawRectangle ( Pens.Black , myRec . X , myRec . Y , 20 , 10 ) ;
 56                //绘制小方块
 57
 58                g . DrawString ( sMoth [ i ] . ToString ( ) , new Font ( "宋体", 9 ) , Brushes . Black , myDec ) ;
 59                //绘制小方块右边的文字
 60
 61                g . DrawString ( iXiaoSH[i].ToString (), new Font ( "宋体", 9 ) , Brushes . Black , myTxt ) ;
 62                myRec . Y += 15 ;
 63                myDec . Y += 15 ;
 64                myTxt . Y += 15 ;
 65            }
 66
 67            //以下代码是根据从数据库中得到的数值大小,绘制扇型,并以相应色彩填充扇型,//从而构成图01中的Pie图
 68            int iTatal = 0 ; 
 69            float fCurrentAngle = 0 ;
 70            float fStartAngle = 0;
 71            for ( int i = 0 ; i < iXiaoSH . Length ; i++ )
 72            {
 73                iTatal = iTatal + iXiaoSH [ i ] ;
 74            }
 75            for ( int i = 0 ; i < iXiaoSH . Length ; i++ )
 76            {
 77                //以下代码是获得要绘制扇型的开始角度
 78                if ( i == iXiaoSH . Length - 1 )
 79                {
 80                    fCurrentAngle = 360- fStartAngle ;
 81                }
 82                else
 83                {
 84                    int iTemp = iXiaoSH [ i ] ;
 85                    fCurrentAngle = ( iTemp * 360 ) / iTatal ;
 86                }
 87                //根据参数绘制扇型
 88
 89                g.DrawPie ( Pens.Black , 100 , 40 , 250 , 250 , fStartAngle , fCurrentAngle ) ;
 90                //以指定色彩填充绘制的扇型
 91
 92                g.FillPie ( new SolidBrush ( GetColor ( i ) ) , 100 , 40 , 250 , 250 , fStartAngle , fCurrentAngle ) ;
 93                fStartAngle += fCurrentAngle ;
 94            }
 95
 96            //画出图片的边框
 97            Pen p = new Pen ( Color.Black , 2 ) ;
 98            g . DrawRectangle ( p , 1 , 1 , 598 , 298 ) ;
 99
100            //向客户端输出数据流,并以此数据流形成Jpeg图片
101            bm.Save ( Response . OutputStream , ImageFormat . Jpeg ) ;
102        }

9. WebForm1.aspx.cs文件中的InitializeComponent过程之后,添加下列代码,下列代码的作用是定义一个名称为GetColor函数,此函数的功能根据索引号得到相应的系统颜色:

/// <summary>
 2        /// 获取颜色
 3        /// </summary>
 4        /// <param name="itemIndex">数组的索引</param>
 5        /// <returns></returns>
 6        private Color GetColor ( int itemIndex ) 
 7        {
 8             Color MyColor ;
 9             int i = itemIndex ;
10            switch (i) 
11             {
12                  case 0 :
13                   MyColor = Color.Green;
14                   return MyColor;
15                  case 1 :
16                   MyColor = Color.Red;
17                    return MyColor;
18                  case 2:
19                   MyColor = Color.Yellow;
20                   return MyColor;
21                  case 3 :
22                   MyColor = Color.Blue;
23                   return MyColor;
24                  case 4 :
25                   MyColor = Color.Orange;
26                   return MyColor;
27                 case 5 :
28                   MyColor = Color.Aqua;
29                   return MyColor;
30                  case 6:
31                   MyColor = Color.SkyBlue;
32                   return MyColor;
33                  case 7:
34                   MyColor = Color.DeepPink;
35                   return MyColor;
36                  case 8:
37                   MyColor = Color.Azure;
38                   return MyColor;
39                  case 9:
40                   MyColor = Color.Brown;
41                   return MyColor;
42                  case 10:
43                   MyColor = Color.Pink;
44                   return MyColor;
45                  case 11:
46                   MyColor = Color.BurlyWood;
47                   return MyColor;
48                  case 12:
49                   MyColor = Color.Chartreuse;
50                   return MyColor;
51                  default:
52                   MyColor = Color.Pink;
53                   return MyColor;
54            }
55        }

        至此,在上述步骤都正确执行后,在ASP.NET页面中实现数据Pie图的全部工作就完成了。此时单击快捷键F5,就可以得到如图01所示的数据Pie图了。

五.总结:
  由于ASP.NET提供了丰富的绘图功能,所以结合这二篇文章的介绍,我想再实现其他的数据图表,应该也不算很困难。
完整的例子代码:

1using System;
  2using System.Collections;
  3using System.ComponentModel;
  4using System.Data;
  5using System.Drawing;
  6using System.Web;
  7using System.Web.SessionState;
  8using System.Web.UI;
  9using System.Web.UI.WebControls;
 10using System.Web.UI.HtmlControls;
 11//下面程序中使用的ImageFormat类所在的命名空间
 12using System . Drawing . Imaging ;
 13//下面程序中使用到关于数据库方面的类所在的命名空间
 14using System . Data . OleDb ;
 15
 16
 17namespace WebPieDemo
 18{
 19    /// <summary>
 20    /// WebForm1 的摘要说明。
 21    /// </summary>
 22    public class WebForm1 : System.Web.UI.Page
 23    {
 24        private void Page_Load(object sender, System.EventArgs e)
 25        {
 26            // 在此处放置用户代码以初始化页面
 27            string sRouter = "c:\\db2.mdb" ;
 28
 29            //获得当前Access数据库在服务器端的绝对路径
 30            string strCon = " Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + sRouter ;
 31
 32            //创建一个数据库连接
 33            OleDbConnection myConn = new OleDbConnection ( strCon ) ;
 34            string strCom = " SELECT YF ,SL FROM MonthSale ORDER BY YF" ;
 35            myConn.Open ( ) ;
 36            OleDbCommand myCommand = new OleDbCommand ( strCom , myConn ) ;
 37            OleDbDataReader myOleDbDataReader = myCommand.ExecuteReader ( ) ;
 38            //创建OleDbDataReader实例,并以此实例来获取数据库中各条记录数据
 39
 40            int [ ] iXiaoSH = new int [ 12 ] ;
 41            //定义一个数组,用以存放从数据库中读取的销售数据
 42
 43            string [ ] sMoth = new string [ 12 ] ;
 44            //定义一个数组,用以存放从数据库中读取的销售月份
 45
 46            int iIndex = 0 ;
 47            while ( myOleDbDataReader.Read ( ) ) 
 48            {
 49                iXiaoSH [ iIndex ] = myOleDbDataReader.GetInt32 ( 1 ) ;
 50                sMoth [ iIndex ] = myOleDbDataReader.GetInt32 ( 0 ) . ToString() + "月" ;
 51                iIndex++ ;
 52            }
 53            //读取Table01数据表中的各条数据,并存放在先前定义的二个数组中
 54
 55            myConn . Close ( ) ;
 56            myOleDbDataReader . Close ( ) ;
 57 
 58            Bitmap bm = new Bitmap ( 600 , 300 ) ;
 59            //创建一个长度为600,宽带为300的Bitmap实例
 60
 61            Graphics g ;
 62            g = Graphics.FromImage ( bm ) ;
 63            g . Clear ( Color . Snow ) ;
 64            g . DrawString ( " ××公司××××年度销售情况一览表" , new Font ( "宋体" , 16 ) , Brushes . Black , new Point ( 5 , 5 ) ) ;
 65            //在绘画图面的指定位置,以指定的字体、指定的颜色绘制指定的字符串。即为图表标题
 66
 67            //以下代码是是实现图01中的右上部区域
 68            //以上是在图01中为下面绘制定位
 69            Point myRec = new Point ( 515 , 30 ) ;
 70            Point myDec = new Point ( 540 , 30 ) ;
 71            Point myTxt = new Point ( 565 , 30 ) ;
 72            g . DrawString ( "单位:万套" , new Font ( "宋体" , 9 ) , Brushes . Black , new Point ( 515 , 12 ) ) ;
 73            for ( int i = 0 ; i < sMoth.Length ; i++ ) 
 74            {
 75                g . FillRectangle ( new SolidBrush ( GetColor ( i ) ) , myRec . X , myRec . Y , 20 , 10 ) ;
 76                //填充小方块
 77
 78                g . DrawRectangle ( Pens.Black , myRec . X , myRec . Y , 20 , 10 ) ;
 79                //绘制小方块
 80
 81                g . DrawString ( sMoth [ i ] . ToString ( ) , new Font ( "宋体", 9 ) , Brushes . Black , myDec ) ;
 82                //绘制小方块右边的文字
 83
 84                g . DrawString ( iXiaoSH[i].ToString (), new Font ( "宋体", 9 ) , Brushes . Black , myTxt ) ;
 85                myRec . Y += 15 ;
 86                myDec . Y += 15 ;
 87                myTxt . Y += 15 ;
 88            }
 89
 90            //以下代码是根据从数据库中得到的数值大小,绘制扇型,并以相应色彩填充扇型,//从而构成图01中的Pie图
 91            int iTatal = 0 ; 
 92            float fCurrentAngle = 0 ;
 93            float fStartAngle = 0;
 94            for ( int i = 0 ; i < iXiaoSH . Length ; i++ )
 95            {
 96                iTatal = iTatal + iXiaoSH [ i ] ;
 97            }
 98            for ( int i = 0 ; i < iXiaoSH . Length ; i++ )
 99            {
100                //以下代码是获得要绘制扇型的开始角度
101                if ( i == iXiaoSH . Length - 1 )
102                {
103                    fCurrentAngle = 360- fStartAngle ;
104                }
105                else
106                {
107                    int iTemp = iXiaoSH [ i ] ;
108                    fCurrentAngle = ( iTemp * 360 ) / iTatal ;
109                }
110                //根据参数绘制扇型
111
112                g.DrawPie ( Pens.Black , 100 , 40 , 250 , 250 , fStartAngle , fCurrentAngle ) ;
113                //以指定色彩填充绘制的扇型
114
115                g.FillPie ( new SolidBrush ( GetColor ( i ) ) , 100 , 40 , 250 , 250 , fStartAngle , fCurrentAngle ) ;
116                fStartAngle += fCurrentAngle ;
117            }
118
119            //画出图片的边框
120            Pen p = new Pen ( Color.Black , 2 ) ;
121            g . DrawRectangle ( p , 1 , 1 , 598 , 298 ) ;
122
123            //向客户端输出数据流,并以此数据流形成Jpeg图片
124            bm.Save ( Response . OutputStream , ImageFormat . Jpeg ) ;
125        }
126
127        Web 窗体设计器生成的代码
146
147        /// <summary>
148        /// 获取颜色
149        /// </summary>
150        /// <param name="itemIndex">数组的索引</param>
151        /// <returns></returns>
152        private Color GetColor ( int itemIndex ) 
153        {
154             Color MyColor ;
155             int i = itemIndex ;
156            switch (i) 
157             {
158                  case 0 :
159                   MyColor = Color.Green;
160                   return MyColor;
161                  case 1 :
162                   MyColor = Color.Red;
163                    return MyColor;
164                  case 2:
165                   MyColor = Color.Yellow;
166                   return MyColor;
167                  case 3 :
168                   MyColor = Color.Blue;
169                   return MyColor;
170                  case 4 :
171                   MyColor = Color.Orange;
172                   return MyColor;
173                 case 5 :
174                   MyColor = Color.Aqua;
175                   return MyColor;
176                  case 6:
177                   MyColor = Color.SkyBlue;
178                   return MyColor;
179                  case 7:
180                   MyColor = Color.DeepPink;
181                   return MyColor;
182                  case 8:
183                   MyColor = Color.Azure;
184                   return MyColor;
185                  case 9:
186                   MyColor = Color.Brown;
187                   return MyColor;
188                  case 10:
189                   MyColor = Color.Pink;
190                   return MyColor;
191                  case 11:
192                   MyColor = Color.BurlyWood;
193                   return MyColor;
194                  case 12:
195                   MyColor = Color.Chartreuse;
196                   return MyColor;
197                  default:
198                   MyColor = Color.Pink;
199                   return MyColor;
200            }
201        }
202    }
203}
204

 https://www.cnblogs.com/merrick/articles/1822412.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Asp.net页面中实现数据饼图 的相关文章

  • Asp.Net实例:C# 绘制统计图(一) ——柱状图

    Asp Net实例 C 绘制统计图 柱状图 折线图 扇形图 统计图形种类繁多 有柱状图 折线图 扇形图等等 而统计图形的绘制方法也有很多 有Flash制作的统计图形 有水晶报表生成统计图形 有专门制图软件制作 也有编程语言自己制作的 这里我
  • 散点图“最佳拟合”线的算法

    我正在使用 MSChart 控件用 C 编写一个小型应用程序来绘制 X 和 Y 数据点集的散点图 其中一些可能相当大 数百个数据点 想问是否有一个 标准 算法来绘制跨点的最佳拟合线 我正在考虑将 X 数据点划分为预定义数量的组 例如 10
  • 烛台多个 Y 值

    我的任务是在 Windows 窗体中使用 MSChart 制作烛台图 我已经成功地制作了 3D 条形图 没有任何问题 但在互联网 微软的源代码 WinSamples 和大量的搜索之后 我找不到创建烛台图的正确方法 可以帮助我的是一个清楚的例
  • 如何更改ms图表中X轴标签的方向

    您好 我正在 winforms 应用程序中使用 Ms 图表控件来根据日期显示值 我需要将 x 轴标签值 日期 方向水平更改为垂直 我搜索了很多属性 但没有找到任何解决方案 任何人都可以帮助我解决这个问题 非常感谢 据我了解您的问题 您询问如
  • ASP.Net MS Chart Control 饼图:删除不需要的填充

    HI 我正在尝试使用 MS Chart 控件创建简单的饼图 当我的饼图在浏览器中呈现时 我在饼图周围填充了我无法摆脱的内容 我希望饼图紧靠图像边缘 没有填充或边距 关于如何实现这一目标有什么想法吗 在我下面的代码中 填充以蓝色突出显示 即
  • 如何对齐两个(或更多)图表的大小、滚动和网格

    我有三个涉及同一周期的信号 伏尔门 电流和能量 我在两张图表上打印数据 一张显示电压 蓝色 和电流 红色 另一张仅显示能量 橙色 它们是两个不同的图表 但实际上 它们共享相同的 X 轴 我有两个与鼠标移动同步的光标 充当两个图形的一个光标
  • MSChart 轴线

    如何显示图表中每个条形的轴线 我只有第二个 第四个 替代文本 http img35 imageshack us img35 6106 chartiu png 我找到了答案 chartArea AxisX MajorGrid Interval
  • 如何在散点图中绘制超过 50,000 个值,从而节省计算机资源?

    我正在使用 Visual Studio 2017 并尝试使用 C 和 winform 制作一个在散点图中显示实时值的程序 通过下面的源代码 我能够让它显示实时值 每当事件发生并且它获得新值 每秒 3 5 次 valueArray 通过 Ge
  • 如何让用户在 MSChart 上创建注释?

    如何在运行中创建注释以及如何启用最终用户放置Annotation BeginPlacement 我尝试以多种方式做到这一点 但无法使其发挥作用 在调用 BeginPlacement 后 它应该实时呈现自身 关于这个主题的文档几乎没有 而且大
  • 时间:2019-05-17 标签:c#WinformMSChartreverseYAxis

    我在 Windows 窗体上使用 MSChart 控件 我想有一个下降 Y 轴通过使用AxisY IsReversed true 但仍将 X 轴保留在底部 默认情况下 当我使用AxisY IsReversed true 然后 X 轴上升到顶
  • 将datareader绑定到asp图表控件

    本质上 我有一个数据读取器 理论上它会调用存储过程 并绑定返回到图表的查询 这是我想要绑定到图表的数据 ForecastDesc Previous Current Budget Forecast 4 Forecast 7 Period1 9
  • MS 图表:获取真正的 InnerPlotPosition?

    使用 Microsoft Charts 创建图表时 我需要获取图表上网格的准确位置 This page http msdn microsoft com en us library dd456696 aspx says as I unders
  • 我可以在 Mono 中使用 Microsoft 图表控件吗?

    做了一些谷歌搜索 找不到明确的答案 如果它们以二进制形式分发 我的假设是否定的 我目前使用 Dundas 并且希望放弃具有成本组件的库 特别是因为 MS 版本拥有我需要的一切 我刚刚运行了安装程序 可从 以下是许可条款 Microsoft
  • Microsoft Chart 堆叠列与非堆叠列分组

    我希望显示 4 组的数据 每组有 1 个堆叠列和 1 个非堆叠列 这是我所追求的模型 获得四个组很容易 这给了我我想要的 Series series chart Series Add Budget series ChartType Seri
  • 如何将图像设置为图表轴或沿图表轴设置?

    我正在尝试使用彩色光谱带作为图表的轴 这个想法是将图像上的颜色与其沿底部 x 轴相关的波长相匹配 条带需要更改大小以匹配图表区域的变化 并扩展和收缩部分以匹配图表区域中的滚动缩放 我尝试过使用图像注释 但随着图表区域的变化 注释尺寸保持固定
  • C#:如何在 ASP.Net 条形图中交叉绘制条形图

    我有一个 asp net 条形图 我正在尝试向其中一个条形图添加剖面线 我不知道该怎么做 我想对图表中的第四个条形 从左起 绘制剖面线 我尝试了下面的代码 但它不起作用 Chart1 Series Actual Points 3 Color
  • 更改 mschart 轴上的日期时间格式

    我正在使用 mschart 显示一段时间内的一些值 它看起来像这样 正如您所看到的 第一个值是从 15 11 开始 最后一个值是从 16 10 开始 但在 x 轴上它显示的是日期 我怎样才能改变这个 编辑 将 XValueType 更改为
  • 如何修改C# Chart控件图表面积百分比

    如果我有一个图表控件有 2chartAreas其中 图表控件默认将图表区域放在彼此的顶部 使每个区域占据图表控件可用大小的 50 有没有办法改变图表区域的百分比 以便我可以说 让顶部图表占据该区域的 75 底部图表占据该区域的 25 所以
  • Winforms Chart - 在折线图上绘制允许的区域

    如何在图表上绘制灰色区域 信号的允许范围 我使用 Winforms 和标准 MicrosoftSystem Windows Forms DataVisualization类 它应该是自定义范围 这意味着起始 Y 点不能仅为零 我在运行时在线
  • 禁用/修复 .Designer.cs 文件中的代码分析警告

    我在用DataVisualization Charting Chart广泛地 并且在很大程度上它正在发挥作用 但是 我经常运行代码分析 并处理了我自己的所有警告 但是 使用图表的 Designer cs 文件中有大约 30 个 CA2000

随机推荐

  • __attribute__ ((at())绝对定位分析

    在学习STM32 IAP 时 遇到了关于数组存储空间绝对定位的问题 例如 u8 USART RX BUF USART REC LEN attribute at 0X20001000 首先我们先搞懂这里的两个关键字 1 attribute 是
  • linux lvm 扩大pv的大小,LVM管理:创建、容量调整

    一 LVM简介 LVM 是逻辑盘卷管理 Logical Volume Manager 的简称 最早是 IBM 为 AIX 研发的存储管理机制 LVM 通过在硬盘和分区之间建立一个逻辑层 可以让多个分区或者物理硬盘作为一个逻辑卷 相当于一个逻
  • 温度传感器工作原理

    参考文章 1 DS18B20传感器的原理 秀秀很久没写文章了的博客 CSDN博客 ds18b20工作原理 2 常见测温传感器及电路原理图 朽木白露的博客 CSDN博客 温度传感器原理图 3 温度传感器工作原理 知乎 温度传感器工作原理 温度
  • react父组件调用子组件方法

    前期我们说了父子组件互相通过props传递数据的方法 这个应该都可以理解 其实今天说的这个 父组件直接调用子组件方法 也类似 先看代码 比较直观 import React Component from react export defaul
  • 论文分享丨西工大音频语音与语言处理研究组四篇论文被IEEE Trans. ASLP和SPL录用

    近日 实验室三篇论文被语音研究顶级期刊IEEE ACM Transactions on Audio Speech and Language Processing TASLP 录用 一篇论文被重要期刊IEEE Signal Processin
  • 深入解析Invoke and BeginInvoke, 同步与异步解析

    Invoke and BeginInvoke 本文后面的源代码分析在我的博客园博客 就是此链接 在 Invoke 或者 BeginInvoke 的使用中无一例外地使用了委托 Delegate 至于委托的本质请参考我的另一随笔 对 net事件
  • python 描述符

    目录 引入 什么是描述符 描述符类型 共享陷阱 应用场景 验证器 ORM 描述符是 Python 语言中一个强大的特性 它隐藏在编程语言的底层 为许多神奇的魔法提供了便利 引入 假设你需要一个学生类 来记录考试的分数 简单写如下 class
  • C程序-2018年第九届蓝桥杯B组-第三题:乘积尾零

    如下的10行数据 每行有10个整数 请你求出它们的乘积的末尾有多少个零 5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432 3051 443
  • 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它 将会被按顺序插入的位置,你可以假设数组中无重复元素.(二分法)

    class Solution public int searchInsert int nums int target int left 0 right nums length 1 int mid 1 while left lt right
  • K-近邻算法之鸢尾花实例 使用Spark实现KNN的Demo

    1 1 K 近邻算法 KNN 概念 K Nearest Neighbor算法又叫KNN算法 这个算法是机器学习里面一个比较经典的算法 总体来说KNN算法是相对比较容易理解的算法 定义 如果一个样本在特征空间中的k个最相似 即特征空间中最邻近
  • 前端系列之jQuery(jQuery弹出层)

    弹出层与使用场景介绍 弹出层代码编写 html整体结构 div class layer mask div div class layer pop div class layer close div div class layer conte
  • 堆排序heapsort

    class declspec dllexport HeapSort public HeapSort int a int len HeapSort void AdjustHeap private int array int length vo
  • 应用程序的两种架构(c/s两层 b/s三层)2

    C S架构是客户端 Client 服务器 database Server 架构 B S是浏览器 Broswer 服务器 web Server database Server 架构 实际上B S架构也算是C S架构 是为了区分一下 一般来说把
  • 基于springboot的幼儿园管理系统

    基于springboot的幼儿园管理系统 项目介绍 幼儿园管理系统 java项目 springboot项目 eclipse和idea都能打开运行 推荐环境配置 eclipse idea jdk1 8 maven mysql 前端技术 Lay
  • 接口自动化面试题汇总,Offer快到碗里来

    一 请问你是如何做接口测试的 大体来说 经历以下过程 接口需求调研 接口测试工具选择 接口测试用例编写 接口测试执行 接口测试回归 接口测试自动化持续集成 具体来说 接口测试流程分成以下九步 第一步 分析出测试需求 并请开发提供接口说明文档
  • Python的关键字和builtins模块

    关键字 from keyword import kwlist print kwlist 于是得到了长度为33的list False None True and as assert break class continue def del e
  • java计算1-100之间的素数和(详细版)

    一 素数概念 除了一和自己本身外不能被其他数整除 并且素数大于1 二 解题思路 1 首先定义一层外层循环 表示1 100之间的每一个数 2 定义一个内层循环 范围大于1 小于外层循环 相当于被外层循环一个一个整除 看是否能除尽 例如外层循环
  • websocket介绍

    偶然在知乎上看到一篇回帖 瞬间觉得之前看的那么多资料都不及这一篇回帖让我对 websocket 的认识深刻有木有 所以转到我博客里 分享一下 比较喜欢看这种博客 读起来很轻松 不枯燥 没有布道师的阵仗 纯粹为分享 废话这么多了 最后再赞一个
  • matlab的narx的使用,matlab NARX做时间序列预测的问题

    NARX 神经网络做一个时间序列预测的时候碰到一些问题 1 目标 用input 178 2 预测output 178 1 数据和程序附后 2 问题 1 训练不多几次就会出现的时候 Maximum MU reached 从而训练停止 这个该如
  • 在Asp.net页面中实现数据饼图

    ASP NET之所以能够在客户端浏览器中形成各种数据图片 是因为在ASP NET中提供了绘图功能 具体的作法是先在服务器端创建一个Bitmap实例 然后利用ASP NET中提供的绘图功能 按照要生成的图片的模样 进行绘制 最后把绘制好的实例