C语言绘制曲线图的示例代码

 更新时间:2024年02月25日 09:38:58   作者:老花眼猫  
这篇文章主要介为大家详细绍了如何使用C语言绘制统计图中的曲线图,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

统计图曲线图绘制方法

常用的统计图有条形图、柱形图、折线图、曲线图、饼图、环形图、扇形图。

前几类图比较容易绘制,饼图环形图绘制较难。

曲线图的曲线绘制较难,今提供曲线图的绘制方法供参考。

本方法采用C语言的最基本功能:

( 1) 绘图功能画线,画圆,画长方形。

(2) 界面美工设计,界面文字打印输出。

代码中有详细的注释,通俗易懂,一看就会。

效果图

实现代码

下面提供2个绘制曲线图的代码:

//变量: 可设置成全局变量或私有变量
Canvas cs ;     //画布,绘制图表载体
float pi=3.1415926535 ;
float a ;            //三角函数 sin (a), cos (a), 
float r ;             //圆半径 radius
int i, j, n ;
float x0,y0,x1,y1 ;  //作图坐标
float dx,dy ;             //中心坐标
string ss, ss1, ss2 ;         //打印文字
 int p[6] ;        //set data or  input  data
double pn ;   //显示数据
 
//*************************  

CurveGraph6 (){   //曲线图 6
      cs.ClearDraw (0,src);   //清屏
      clearOutput();
      selectStyle () ; //图例样式选项设置
      cs.SetFillMode (1);//0不填色,1填色
      cs.SetColor (255,250,250,250);
      cs.DrawRect (0,4,720,600);   //back board
      cs.SetColor (255,140,140,140);
      cs.DrawRect (24,24,706,586);   //back      
      cs.SetColor (255,250,250,250);
      cs.DrawRect (20,20,700,580);   //back 

      cs.SetFillMode (0);//0不填色,1填色
      cs.SetColor (255,0,0,240);
      cs.DrawRect (20,20,700,580);   //框线
      cs.DrawRect (24,24,696,576);   //框线

      cs.SetFillMode (1);//0不填色,1填色
      cs.SetStrokeWidth(1);
      cs.SetColor(255,220,220,220);
      for (j=0; j<=10 ; j++){   
      for (i=0; i<=7 ; i++){   
          dx=j*50+100 ;
          dy=i*50+50 ;
          cs.DrawRect(dx,dy,dx+49,dy+49);  }  }//grid

           cs.SetTextStyle (0);
           cs.SetColor(255,0,0,250);
      cs.DrawRect (50,450,670,452);   //X线
      cs.DrawRect (99,48,101,450);   //Y线
          cs.SetColor(255,250,0,0);
          cs.SetTextSize (18);
     cs.DrawRect (90,249,670,251);   //standard线
      cs.DrawText ("0.75", 52 ,109) ;
      cs.DrawText ("0.50", 52 ,159) ;
      cs.DrawText ("0.25", 52 ,209) ;
      cs.DrawText ("0", 65 ,259) ;
      cs.DrawText ("-0.25", 50 ,309) ;
      cs.DrawText ("-0.50", 50 ,359) ;
      cs.DrawText ("-0.75", 50 ,409) ;
 
      cs.SetTextStyle (0);     //画标尺
      cs.SetTextSize (18);
             cs.SetColor(255,50,80,80);
      ss=" 0         30       60        90      120      150 " ;
      ss1=" 180     210     240     270     300     330" ;
      cs.DrawText (ss,90,475) ;
      cs.DrawText (ss1,380,475) ;   //standard
      cs.SetTextSize (24);
      cs.DrawText ("Sec >",30, 475) ;

 //draw Curve graphics  绘制曲线
//* curve : x1 +5 标尺x轴 0 位,  bs*5 步长
//x0 曲线幅宽,   + -pn y轴峰谷弧高,  y+300 x轴y定位
// pn= 0 -- 200 高,bs=50*2
  int bs ;   //步长
//p[1]=150; p[2]=80; p[3]=100; p[4]=50; p[5]=140;
         cs.SetColor (255,0,120,0);
  for (n=1; n<=5; n++){
        bs=n*100-100 ;
        //pn=p[n] ;
        Rn=random ()*90+50 ;
        pn=(int) Rn ;
  for (i=120;i<240;i++){
         a=pi/360*i*6 ;     //360 曲线点密度
         x0=50;
        // pn=170 ;
         x1=(float)((x0/pi*a)+bs);
         y1=(float)(- pn*sin(a)+250);
         cs.DrawCircle(x1,y1,2);   }   }
      cs.Update ();
          sleep (300) ;

  for (n=1; n<=5; n++){
        bs=n*100-100 ;
        Rn=random ()*40+40 ;
        pn=(int) Rn ;
  for (i=120;i<240;i++){
         a=pi/360*i*6 ;     //360 曲线点密度
         x0=50;
         x1=(float)((x0/pi*a)+bs);
         y1=(float)(- pn*sin(a)+250);
            cs.SetColor (255,250,100,160);
         cs.DrawCircle(x1,y1,1);   
            cs.SetColor (255,250,220,150);
         cs.DrawLine (x1,y1,x1,250) ;    }   }

 //draw title
       cs.SetFillMode (1);//0不填色,1填色
       cs.SetTextStyle (1);
       cs.SetStrokeWidth(1);
       cs.SetTextSize (26);
       cs.SetColor (255,0,220,150);
       cs.DrawText ("Curve Chart 📊",470,80) ;
       cs.SetTextSize (50);
           ss="统计图  -  曲线图" ;
       cs.SetColor(255,50,120,20);      //立体字
           cs.DrawText (ss,164,534);    //阴影
      cs.SetColor(255,0,250,0);
           cs.DrawText (ss,160,530);    //本字
      cs.SetFillMode (0);//0不填色,1填色
      cs.SetColor(255,250,150,0);
           cs.DrawText (ss,160,530);    //框线
       cs.Update ();
}//CurveGraph6 ()

CurveGraph7 (){    //曲线图 7:填充区域
      cs.ClearDraw (0,src);   //清屏
      clearOutput();
      selectStyle () ; //图例样式选项设置
      cs.SetFillMode (1);//0不填色,1填色
      cs.SetColor (255,250,250,250);
      cs.DrawRect (0,4,720,600);   //back board
      cs.SetColor (255,140,140,140);
      cs.DrawRect (24,24,706,586);   //back      
      cs.SetColor (255,250,250,250);
      cs.DrawRect (20,20,700,580);   //back 

      cs.SetFillMode (0);//0不填色,1填色
      cs.SetColor (255,0,0,240);
      cs.DrawRect (20,20,700,580);   //框线
      cs.DrawRect (24,24,696,576);   //框线

      cs.SetFillMode (1);//0不填色,1填色
      cs.SetStrokeWidth(1);
      cs.SetColor(255,220,220,220);
      for (j=0; j<=10 ; j++){   
      for (i=0; i<=7 ; i++){   
          dx=j*50+100 ;
          dy=i*50+50 ;
          cs.DrawRect(dx,dy,dx+49,dy+49);  }  }//grid

          cs.SetTextStyle (0);
          cs.SetTextSize (18);
          cs.SetColor(255,0,0,250);
      cs.DrawRect (50,450,670,452);   //X线
      cs.DrawRect (99,48,101,450);   //Y线
           cs.SetColor(255,250,0,0);
      cs.DrawRect (90,249,670,251);   //standard线
      cs.DrawText ("0.75", 52 ,107) ;
      cs.DrawText ("0.50", 52 ,157) ;
      cs.DrawText ("0.25", 52 ,207) ;
      cs.DrawText ("0", 65 ,257) ;
      cs.DrawText ("-0.25", 50 ,307) ;
      cs.DrawText ("-0.50", 50 ,357) ;
      cs.DrawText ("-0.75", 50 ,407) ;
 
      cs.SetTextStyle (1);     //画标尺
      cs.SetTextSize (18);
            cs.SetColor(255,0,0,0);
      ss=" 0         30       60        90      120      150 " ;
      ss1=" 180     210     240     270     300     330" ;
      cs.DrawText (ss,90,475) ;
      cs.DrawText (ss1,380,475) ;   //standard
      cs.SetTextSize (24);
      cs.DrawText ("Sec >",30, 475) ;

//draw Curve graphics  绘制曲线
//* curve : x1-bs 标尺x轴 0 位,  bs 幅宽
//x0 X轴 0位,   + -pn y轴峰谷弧高,  y+250 x轴y定位
// pn= 0 -- 200,+ - pn> 正弦余弦。bs=幅宽
  int bs ;   //步长
         cs.SetStrokeWidth(1);
         cs.SetColor (255,255,0,0);
   for (i=100;i<283;i++){
       a=pi/360*i*6 ;  //360 完整双曲线,小于为局部段
       // x0=240 ;  bs=300 ;  pn=150 ;  //i=100-285 (1)
       x0=180 ;  bs=200 ;  pn=80 ;  //i=100-283 (2)
       x1=(float)((x0/pi*a)-bs);   //bs=50--300
       y1=(float)(-pn*sin(a)+250); //dy=250 Y轴center
           cs.SetColor (255,255,0,0);
        cs.DrawCircle(x1,y1,2);   
            cs.SetColor (255,0,0,250);
         cs.DrawLine (x1,y1,x1,250) ;      }

  for (n=1; n<=8; n++){    //draw 多条曲线
        Rn=random ()*60+100 ;
        pn=(int) Rn ;
   for (i=100;i<283;i++){
       a=pi/360*i*6 ;  //360 完整双曲线,小于为局部段
       x0=180 ;  bs=200 ;  //pn=80 ;  
       x1=(float)((x0/pi*a)-bs);   //bs=50--300
       y1=(float)(-pn*sin(a)+250); //dy=250 Y轴center
     if (n==1||n==5) cs.SetColor (255,200,0,100);
     if (n==2||n==6) cs.SetColor (255,250,150,100);
     if (n==3||n==7) cs.SetColor (255,0,0,250);
     if (n==4||n==8) cs.SetColor (255,250,100,130);
         cs.DrawCircle(x1,y1,1.5);   }    }

//draw title
      cs.SetFillMode (1);//0不填色,1填色
        cs.SetTextStyle (1);
       cs.SetStrokeWidth(1);
       cs.SetTextSize (26);
      cs.DrawText ("Curve Chart 📊",470,80) ;
      cs.SetTextSize (50);
         ss="统计图  -  曲线图" ;
      cs.SetColor(255,50,120,20);      //立体字
           cs.DrawText (ss,164,534);    //阴影
      cs.SetColor(255,0,250,0);
           cs.DrawText (ss,160,530);    //本字
      cs.SetFillMode (0);//0不填色,1填色
      cs.SetColor(255,250,150,0);
           cs.DrawText (ss,160,530);    //框线
       cs.Update ();
}//CurveGraph7 ()

到此这篇关于C语言绘制曲线图的示例代码的文章就介绍到这了,更多相关C语言曲线图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • VC MFC非模态对话框的实现方法

    VC MFC非模态对话框的实现方法

    这篇文章主要介绍了VC MFC非模态对话框的实现方法,有助于读者加深对于模态对话框与非模态对话框的理解与运用,需要的朋友可以参考下
    2014-07-07
  • C语言结构体定义的方法汇总

    C语言结构体定义的方法汇总

    结构体是一种工具,用这个工具可以定义自己的数据类型。下面通过本文给大家分享了C语言结构体定义的方法汇总,需要的朋友参考下吧
    2017-12-12
  • 在C语言编程中使用变量的基础教程

    在C语言编程中使用变量的基础教程

    这篇文章主要介绍了在C语言编程中使用变量的基础教程,特别需要注意C语言中的指针变量,需要的朋友可以参考下
    2016-02-02
  • C语言中sizeof函数的基本使用总结

    C语言中sizeof函数的基本使用总结

    这篇文章主要给大家介绍了关于C语言中sizeof函数的基本使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • C语言实现飞机小游戏

    C语言实现飞机小游戏

    这篇文章主要为大家详细介绍了C语言实现飞机小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • C语言函数栈帧的创建和销毁详解

    C语言函数栈帧的创建和销毁详解

    这篇文章主要为大家详细介绍了C语言函数栈帧的创建和销毁,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • C语言进阶教程之字符串&内存函数

    C语言进阶教程之字符串&内存函数

    对于字符,在计算机内部都是用数字(字符编码)来表示的,而字符串是“字符连续排列”的一种表现,这篇文章主要给大家介绍了关于C语言进阶教程之字符串&内存函数的相关资料,需要的朋友可以参考下
    2021-09-09
  • 一起来学习C++的动态内存管理

    一起来学习C++的动态内存管理

    这篇文章主要为大家详细介绍了C++的动态内存管理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • C/C++回调函数介绍

    C/C++回调函数介绍

    回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数
    2013-10-10
  • C++实现简易的通讯录管理系统

    C++实现简易的通讯录管理系统

    这篇文章主要为大家详细介绍了C++实现简易的通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06

最新评论