欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用C語言繪制柱形圖的示例代碼

 更新時間:2024年02月19日 08:44:31   作者:老花眼貓  
常用的統(tǒng)計圖有條形圖、柱形圖、折線圖、曲線圖、餅圖、環(huán)形圖、扇形圖,這篇文章主要為大家介紹了C語言中繪制條形圖和柱形圖的方法,需要的可以參考下

統(tǒng)計圖柱形圖繪制方法

常用的統(tǒng)計圖有條形圖、柱形圖、折線圖、曲線圖、餅圖、環(huán)形圖、扇形圖。

前幾類圖比較容易繪制,餅圖環(huán)形圖繪制較難。

今提供條形圖和柱形圖的繪制方法,附加環(huán)形圖和藝術(shù)環(huán)圖的繪制方法供參考。

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

( 1) 繪圖功能畫線,畫圓,畫長方形。

(2) 界面美工設(shè)計,界面文字打印輸出。

代碼中有詳細的注釋,通俗易懂,一看就會。

下面是繪制柱形圖、條形圖的代碼:

//變量: 可設(shè)置成全局變量或私有變量
Canvas cs ;     //畫布,繪制圖表載體
float pi=3.1415926535 ;
float a ;            //三角函數(shù) 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 ;   //顯示數(shù)據(jù)

條形圖

BarChart4 (){    //條形圖
      cs.ClearDraw (0,src);   //清屏
      clearOutput();
      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);
      for (j=0; j<=9 ; j++){   //draw grid
      for (i=0; i<=5 ; i++){   
          dx=j*50+150 ;
          dy=i*50+100 ;
          cs.SetColor(255,220,220,220);
          cs.DrawRect (dx,dy,dx+49,dy+49);  }  }  //grid
      for (i=0; i<=10 ; i++){   
          dx=i*50+150 ;
          cs.SetColor(255,250,0,0);
          cs.DrawRect (dx-3,403,dx,409); }  //標線

      cs.SetColor(255,250,0,0);
      cs.DrawRect (50,400,670,403);   //X線
      cs.DrawRect (147,90,150,400);   //Y線
          
      cs.SetTextStyle (0);     //畫標尺
      cs.SetTextSize (18);
      ss=" 0         25       50        75      100      125" ;
      ss1=" 150     175     200     225     250" ;
      cs.DrawText (ss,140,425) ;
      cs.DrawText (ss1,430,425) ;   //standard

      cs.SetTextSize (20);
      cs.DrawText ("年份  量比",55,390) ;
      cs.SetTextSize (24);
      cs.DrawText ("Bar Chart ??",545,60) ;

      cs.DrawText ("計劃           完成 ", 120,70) ;   
          cs.SetColor(255,250,200,100);
       cs.DrawRect (178,48,222,72) ;  
           cs.SetColor(255,0,190,190);
       cs.DrawRect (180,50,220,70) ;  
           cs.SetColor(255,250,0,0) ;    
       cs.DrawCircle (100,60,9) ;  
       cs.DrawRect (80,58,100,62) ;  

 //依數(shù)據(jù)繪出條形圖
 int yy ;       //打印年份
   p[1]=150; p[2]=170; p[3]=165; p[4]=125; p[5]=210;
          cs.SetTextSize (22);
    for (n=1; n<=5 ; n++){     //draw Bar Chart
           cs.SetFillMode (1);//0不填色,1填色
           cs.SetColor(255,0,190,190);
           dx=150 ;  dy=n*50+100 ;
           m=p[n]*2;
        cs.DrawRect (dx,dy-12,dx+m,dy+12) ;     
            ss=intToString (p[n]) ;
        cs.DrawText (ss,dx+m-35,dy-14) ;   //p(n)
             yy=2018+n ;
            ss1=intToString (yy) ;
            cs.SetColor(255,0,100,0);
        cs.DrawText (ss1, 85,dy+7) ;   //SD year
            cs.SetColor(255,250,20,100);
            cs.SetFillMode (0);//0不填色,1填色
        cs.DrawRect (dx,dy-12,dx+m,dy+12) ;       }

  //繪出標線: 計劃
  p[1]=140; p[2]=150; p[3]=160; p[4]=170; p[5]=180;
    for (n=1; n<=5 ; n++){     //draw Line Chart
          cs.SetColor(255,250,0,0);   //折線
          cs.SetFillMode (1);//0不填色,1填色
          cs.SetStrokeWidth(2);
          dx=150 ;  dy=n*50+100 ;
          m=p[n]*2 ;  
      cs.DrawCircle (dx+m,dy,9) ; 
      cs.DrawRect (dx+m,dy-2,150,dy+2) ;
            ss1=intToString (p[n]) ;
      cs.DrawText (ss1,dx+m+10, dy+7) ;   }//data

//draw title 統(tǒng)計圖題標
      cs.SetFillMode (1);//0不填色,1填色
       cs.SetTextSize (50);
       cs.SetTextStyle (1);
       cs.SetStrokeWidth(1);
          ss="統(tǒng)計圖  -  條形圖" ;
      cs.SetColor(255,50,120,20);      //立體字
           cs.DrawText (ss,154,524);    //陰影
      cs.SetColor(255,0,250,0);
           cs.DrawText (ss,150,520);    //本字
      cs.SetFillMode (0);//0不填色,1填色
      cs.SetColor(255,250,150,0);
           cs.DrawText (ss,150,520);    //框線
       cs.Update ();
}//barChart4 ()

柱狀圖

BarChart5 ( ){   // 柱狀圖繪制方法
 int yy ;   //打印年份
      cs.ClearDraw (0,src);   //清屏
      clearOutput();
      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<=9 ; j++){   
      for (i=0; i<=5 ; i++){   
          dx=j*50+150 ;
          dy=i*50+100 ;
          cs.SetColor(255,220,0,220);
      cs.DrawRect(138,dy-1,147,dy+1); 
          cs.SetColor(255,220,220,220);
      cs.DrawRect(dx,dy,dx+49,dy+49);  }  }//grid
          cs.SetColor(255,250,0,0);
      cs.DrawRect (60,400,670,403);   //X線
      cs.DrawRect (147,90,150,400);   //Y線
          
          cs.SetTextStyle (0);     //畫標尺
          cs.SetTextSize (20);
      cs.DrawText (" 50",93,358) ;
      cs.DrawText ("100",90,308) ;
      cs.DrawText ("150",90,258) ;
      cs.DrawText ("200",90,208) ;
      cs.DrawText ("250",90,158) ;
      cs.DrawText ("300",90,108) ;
          cs.SetTextSize (24);
      cs.DrawText ("量比",85,396) ;
   
         cs.SetTextSize (24);
         cs.SetColor(255,0,60,0);
      cs.DrawText ("年份 >",85,428) ;
      cs.DrawText ("Bar Chart ??",510,70) ;

      cs.DrawText ("計劃           完成 ", 120,70) ;   
          cs.SetColor(255,250,200,100);
       cs.DrawRect (178,48,222,72) ;  
           cs.SetColor(255,0,120,0);
       cs.DrawRect (180,50,220,70) ;  
           cs.SetColor(255,250,0,0) ;    
       cs.DrawCircle (100,60,9) ;  
       cs.DrawRect (80,58,100,62) ;  

//依數(shù)據(jù)繪出條形圖
  p[0]=0 ;  x2=150 ;  y2=300 ;
  p[1]=150; p[2]=250; p[3]=290; p[4]=265; p[5]=185;
    for (n=1; n<=5 ; n++){     //draw Bar Chart
          cs.SetFillMode (1);//0不填色,1填色
          cs.SetStrokeWidth(2);
          dx=n*100+100 ;  dy=400 ;
          m=p[n] ;  
          cs.SetColor(255,0,120,0);
      cs.DrawRect (dx-20,400-m,dx+20,dy) ;   //bar
           cs.SetTextSize (20);
           yy=2018+n ;
           ss1=intToString (yy) ;
      cs.DrawText (ss1,dx-22,dy+25) ;   //year
            x3=n*100+100 ;        //完成折線
            y3=400-p[n] ;
       cs.DrawCircle (x3,y3, 7) ;    //完成折線
       cs.DrawLine (x3,y3, x2,y2) ;    //完成折線
             x2=x3 ;   y2=y3 ;    
         cs.SetTextSize (18);
          cs.SetColor(255,250,230,0);
          ss=intToString (p[n]) ;
       cs.DrawText (ss,dx-15,dy-m+20) ;   //data
 
           cs.SetColor(255,250,200,100);   //框線
           cs.SetFillMode (0);//0不填色,1填色
        cs.DrawRect (dx-20,400-m,dx+20,dy) ;  
                 }

  //繪出折線圖 計劃
  p[1]=160; p[2]=180; p[3]=200; p[4]=220; p[5]=240;
          x0=150 ;  y0=250 ;    //起點坐標值
    for (n=1; n<=5 ; n++){     //draw Line Chart
          cs.SetColor(255,250,0,0);   //折線
          cs.SetFillMode (1);//0不填色,1填色
          cs.SetStrokeWidth(2);
          dx=n*100+100 ;  dy=400 ;
          m=p[n] ;  
      cs.DrawCircle (dx,dy-m,9) ; 
      cs.DrawLine (dx,dy-m,dx,400) ;
           ss=intToString (p[n]) ;
      cs.DrawText (ss,dx+10,dy-m+6) ;   //data
            x1=n*100+100 ;        //計劃折線
            y1=400-p[n] ;
      cs.DrawLine (x0,y0, x1,y1) ;    //計劃折線
             x0=x1 ;   y0=y1 ;     //值轉(zhuǎn)換
               } 

//draw title 統(tǒng)計圖題標
      cs.SetFillMode (1);//0不填色,1填色
       cs.SetTextSize (50);
       cs.SetTextStyle (1);
       cs.SetStrokeWidth(1);
          ss="統(tǒng)計圖  -  柱形圖" ;
      cs.SetColor(255,50,120,20);      //立體字
           cs.DrawText (ss,164,524);    //陰影
      cs.SetColor(255,0,250,0);
           cs.DrawText (ss,160,520);    //本字
      cs.SetFillMode (0);//0不填色,1填色
      cs.SetColor(255,250,150,0);
           cs.DrawText (ss,160,520);    //框線
       cs.Update ();
}//BarChart5 ()

附加:環(huán)形圖

//****附加:環(huán)形圖 (帶色塊分隔線 )****      
PieGraph2 (){  //環(huán)形圖(帶色塊分隔線)
      cs.ClearDraw (0,src);   //清屏
      clearOutput();
      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,230,240,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(2);
          cs.SetTextSize (30);      //題標
          cs.SetColor (255,0,0,250);
      cs.DrawText ("PieGraph ?",510,70) ;
          dx=360 ; dy=300 ;  
      cs.SetColor(255,250,240,240);
      cs.DrawCircle(dx,dy,135);    //center
 //繪制圖表
      cs.SetTextStyle (0);
      cs.SetTextSize (18);
       r=120;
       p[0]=-180;  
  p[1]=150;  p[2]=170;  p[3]=156;  p[4]=152; p[5]=92;
       k[0]=-180;  
       k[1]=k[0]+p[1];
       k[2]=k[1]+p[2];
       k[3]=k[2]+p[3];
       k[4]=k[3]+p[4];
       k[5]=k[4]+p[5];
          
     for (n=1; n<=5 ; n++){   //data=5
       for (i= k[n-1]; i<=k[n]; i++){  //draw Piegraph
       if (n==1) cs.SetColor(255,0,250,0);
       if (n==2) cs.SetColor(255,255,205,0);
       if (n==3) cs.SetColor(255,250,0,0);
       if (n==4) cs.SetColor(255,250,50,220);
       if (n==5) cs.SetColor(255,0,150,220);
            a=pi/360*((k[n-1]+k[n])/2) ;   //這是第二種畫法
           x1=(float)(5*cos (a))+dx ;     
           y1=(float)(5*sin (a))+dy ;         
             a=pi/360*i ;     
           x0=(float)(r*cos (a))+x1 ;     //r=radius
           y0=(float)(r*sin (a))+y1 ;
           cs.DrawLine (x1,y1,x0,y0);     //draw out
      cs.DrawRect (100,n*40+20,195,n*40+50); //色標

      //** print data as "28.25%"
           s=intToString (p[n]);
           cs.DrawText (s, 60,40+n*40);
           pn=p[n]*10000/720 ;    //擴大100
           pn=pn/100 ;      //保留2位小數(shù)
           ss1=doubleToString (pn)+"%" ;
           cs.SetColor(255,250,250,250);
           cs.DrawText (ss1,120,40+n*40);
       cs.SetColor(255,0,0,150);    //圖上標( n% )
            ma=pi/360*((k[n-1]+k[n])/2) ;
       x1=(float)((r-45)*cos (ma))+dx-33;     
       y1=(float)((r-35)*sin (ma))+dy ;
            cs.DrawText (ss1,x1,y1);
 
       //** 中心加圓是環(huán)圖,不加圓是餅圖
         cs.SetColor(255,250,240,240);
         cs.DrawCircle(dx,dy,45);    //中心加圓是環(huán)圖
             cs.Update ();      }   
         cs.DrawLine (dx,dy,x0,y0);   } //色塊有分隔線

 //打印統(tǒng)計圖題標 
      cs.SetFillMode (1);//0不填色,1填色
      cs.SetTextSize (60);
      cs.SetTextStyle (1);
      cs.SetStrokeWidth(1);
           ss="統(tǒng)計圖  -  環(huán)圖" ;
      cs.SetColor(255,50,120,20);      //立體字
           cs.DrawText (ss,154,524);    //陰影
      cs.SetColor(255,0,250,0);
           cs.DrawText (ss,150,520);    //本字
      cs.SetFillMode (0);//0不填色,1填色
      cs.SetColor(255,250,150,0);
           cs.DrawText (ss,150,520);    //框線
       cs.Update ();
}//PieGraph2 ()

附加:藝術(shù)環(huán)圖

PieGraph1 (){  
 //環(huán)形圖:很有藝術(shù)感的圖表,也可稱C形圖
      cs.ClearDraw (0,src);   //清屏(cls), clear screen
      clearOutput();      //清除 print  字串
      cs.SetFillMode (1);//0不填色,1填色
      cs.SetColor (255,250,250,250);
      cs.DrawRect (0,4,720,600);   //畫圖表底板
      cs.SetColor (255,140,140,140);
      cs.DrawRect (24,24,706,586);   //back      
      cs.SetColor (255,230,240,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.SetTextStyle (1);
      cs.SetStrokeWidth(2);
          cs.SetTextSize (30);      //題標
          cs.SetColor (255,0,0,250);
      cs.DrawText ("PieGraph ?",510,70) ;
            dx=360 ; dy=260 ;    //圖形中心點
      cs.SetColor(255,250,250,250);
      cs.DrawCircle(dx,dy,185);    //center 圖案底色
      cs.SetColor(255,250,200,200);
      cs.DrawLine (dx-200,dy,dx+200,dy); //十字線
      cs.DrawLine (dx,dy-200,dx,dy+200); //色標

      cs.SetTextStyle (1);  //粗體字
      cs.SetTextSize (22);
      cs.SetColor(255,0,0,250);
      cs.DrawText ("Group A",35,98);
      cs.DrawText ("Group B",35,138);
      cs.DrawText ("Group C",35,178);
           setn=1 ;
           p[1]=87;  p[2]=65;  p[3]=76;  //intput data    
     for (n=1; n<=3 ; n++){   //data=3
           r=200-n*43 ;     //r=radius
           pn=p[n]*72/10+180;
              print "pn= ",pn;
     for (i=180 ; i<=pn; i++){  //畫圖案 顏色可自定
           a=pi/360*i ;  
       if (n==1) cs.SetColor(255,180,220,250); //設(shè)色
       if (n==2) cs.SetColor(255,80,140,250);
       if (n==3) cs.SetColor(255,50,180,250);
           x0=(float)(r*cos (a))+dx;     //r=radius
           y0=(float)(- r*sin (a))+dy;  
       cs.DrawCircle (152,n*40+50,20); //色標
       cs.DrawCircle (140,n*40+50,20); //色標
       cs.DrawCircle (x0,y0,20) ;  //繪出圖案
 
      //** print data as "87%",  加"%"
      //input data 轉(zhuǎn)換,量和百分比轉(zhuǎn)換,定標500=100%
             ss1=intToString (p[n])+"%" ;          
             ss2=intToString (p[n]*5) ;
          cs.SetTextSize (20);
       cs.DrawText (ss2,dx+25,dy-193+n*43);

            cs.SetColor(255,250,250,250);
       cs.DrawText (ss2,130,n*40+56);
       cs.DrawText (ss1,dx-30,dy-193+n*43);
      //動畫式顯示效果:逐點更新繪出
           cs.Update ();      }    }
 
  //打印統(tǒng)計圖題標 
       cs.SetFillMode (1);   //0不填色,1填色
       cs.SetTextSize (60);
       cs.SetTextStyle (1);
       cs.SetStrokeWidth(1);
           ss="統(tǒng)計圖  -  環(huán)形圖" ;
       cs.SetColor(255,50,120,20);      //立體字
           cs.DrawText (ss,124,524);    //陰影
       cs.SetColor(255,0,200,250);
           cs.DrawText (ss,120,520);    //本字
       cs.SetFillMode (0);   //0不填色,1填色
       cs.SetColor(255,250,0,0);
           cs.DrawText (ss,120,520);    //框線
        cs.Update ();
}//PieGraph1 ()

到此這篇關(guān)于使用C語言繪制柱形圖的示例代碼的文章就介紹到這了,更多相關(guān)C語言柱形圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言編程實現(xiàn)掃雷游戲

    C語言編程實現(xiàn)掃雷游戲

    這篇文章主要為大家詳細介紹了C語言編程實現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 使用VC++實現(xiàn)打印乘法口訣表

    使用VC++實現(xiàn)打印乘法口訣表

    本文給大家分享的是一個超級簡單的小例子,使用vc++打印乘法口訣表,給需要的小伙伴參考下吧。
    2015-03-03
  • C語言每日練習(xí)之字符串反轉(zhuǎn)

    C語言每日練習(xí)之字符串反轉(zhuǎn)

    這篇文章主要介紹了C語言字符串反轉(zhuǎn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • Matlab實現(xiàn)黑洞優(yōu)化算法的示例代碼

    Matlab實現(xiàn)黑洞優(yōu)化算法的示例代碼

    根據(jù)黑洞現(xiàn)象原理首次提出BH 算法,它在傳統(tǒng)PSO基礎(chǔ)上引入了新的機制,有效地提高了收斂速度并防止了陷入局部極值的情況發(fā)生.本文將用Matlab實現(xiàn)這一算法,需要的可以參考一下
    2022-06-06
  • 總結(jié)C/C++面試中可能會碰到的字符串指針題

    總結(jié)C/C++面試中可能會碰到的字符串指針題

    C/C++是最能體現(xiàn)程序員能力的語言之一,其功能強大,在IT行業(yè)的各個方面都有大量的應(yīng)用。下面這篇文章主要介紹了總結(jié)了在C/C++面試中可能會碰到的字符串指針題,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • C#將Unicode編碼轉(zhuǎn)換為漢字字符串的簡單方法

    C#將Unicode編碼轉(zhuǎn)換為漢字字符串的簡單方法

    下面小編就為大家?guī)硪黄狢#將Unicode編碼轉(zhuǎn)換為漢字字符串的簡單方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • C++多態(tài)實現(xiàn)方式詳情

    C++多態(tài)實現(xiàn)方式詳情

    這篇文章主要介紹了C++多態(tài)實現(xiàn)方式詳情,多態(tài)是一種面向?qū)ο蟮脑O(shè)計思路,本身和C++不是強綁定的,其他語言當(dāng)中一樣有多態(tài),只不過實現(xiàn)的方式可能有所不同。下面來一起了解更多詳細內(nèi)容吧
    2022-01-01
  • C++采用TLS線程局部存儲的用法實例

    C++采用TLS線程局部存儲的用法實例

    這篇文章主要介紹了C++采用TLS線程局部存儲的用法實例,詳細講述了TLS索引及線程的操作,非常具有實用價值,需要的朋友可以參考下
    2014-10-10
  • c++模板自定義數(shù)組

    c++模板自定義數(shù)組

    這篇文章主要介紹了c++模板自定義數(shù)組,通過制造通用模板,創(chuàng)建自定義的數(shù)組展開文章相關(guān)內(nèi)容,具有一的參考價值,需要的小伙伴可以參考一下
    2022-03-03
  • OpenCV利用K-means實現(xiàn)根據(jù)顏色進行圖像分割

    OpenCV利用K-means實現(xiàn)根據(jù)顏色進行圖像分割

    K-means是一種經(jīng)典的無監(jiān)督聚類算法---不需要人工干預(yù)。本文將通過K-means算法實現(xiàn)根據(jù)顏色進行圖像分割的效果,感興趣的小伙伴可以嘗試一下
    2022-10-10

最新評論