最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用C語(yǔ)言繪制統(tǒng)計(jì)圖中的餅圖

 更新時(shí)間:2024年02月15日 07:34:06   作者:老花眼貓  
常用的統(tǒng)計(jì)圖有條形圖、柱形圖、折線圖、曲線圖、餅圖、環(huán)形圖、扇形圖,本文主要為大家詳細(xì)介紹了如何使用使用C語(yǔ)言繪制統(tǒng)計(jì)圖中的餅圖,希望對(duì)大家有所幫助

統(tǒng)計(jì)圖餅圖繪制方法(C語(yǔ)言)

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

前幾類(lèi)圖比較容易繪制,餅圖繪制較難。今值此介紹餅圖的繪制方法。

本方法采用C語(yǔ)言的最基本功能:

(1) 繪圖功能畫(huà)線,畫(huà)圓,畫(huà)長(zhǎng)方形。

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

代碼中有詳細(xì)的注釋?zhuān)ㄋ滓锥?,一看就?huì)。

效果圖

實(shí)現(xiàn)代碼

下面是繪制餅圖的代碼:

//變量: 可設(shè)置成全局變量或私有變量
Canvas cs ;     //畫(huà)布,繪制圖表載體
float pi=3.1415926535 ;
float a ;            //三角函數(shù) sin (a), cos (a), 
float r ;             //圓半徑 radius
int i, j, n ;
float x0,y0,x1,y1 ;  //作圖坐標(biāo)
float dx,dy ;             //中心坐標(biāo)
string ss, ss1, ss2 ;         //打印文字

//餅圖的代碼 PieGraph ( ):
PieGraph ( ) {      //繪制餅圖和突出顯示圖塊
  int p[6] ;        //set data or get data
  int k[6] ;         //作圖數(shù)據(jù)換算
  double pn ;   //顯示百分比數(shù) " 29.16% "
  int setn ;        //突出圖塊選項(xiàng)
  double ma ;    //圖上標(biāo)文字 " 29.16% "

      cs.ClearDraw (0,src);   //清屏(cls), clear screen
      cs.SetFillMode (1);//0不填色,1填色
      cs.SetColor (255,250,250,250);
      cs.DrawRect (0,4,720,600);   //畫(huà)圖表底板
      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.SetTextSize (28);      //題標(biāo)
          cs.SetColor (255,0,0,250);
      cs.DrawText ("達(dá)克科技?DUCK",470,60) ;
      cs.SetStrokeWidth(2);
           //圖例: 圖表底板寬高 720  *600
           dx=360 ; dy=300 ;       //center
      cs.SetColor(255,250,240,240);
      cs.DrawCircle(dx,dy,128);     //圖底板圓形
 
      cs.SetTextStyle (0);
      cs.SetTextSize (18);
            r=120 ;      //radius
            setn=1 ;        //突出圖塊選項(xiàng)
   p[1]=210;  p[2]=165;  p[3]=115;  p[4]=135; p[5]=95;
//預(yù)設(shè)置數(shù)據(jù) p (5) 
//*本圖例預(yù)設(shè)置數(shù)據(jù),可另行設(shè)計(jì)數(shù)據(jù)輸入方法
//為保證圖案填充色需增加線條密度,故作圖整個(gè)
//圓分為 720 線,data p(n) 湊數(shù)成720。
//*若其他數(shù)據(jù)項(xiàng)要按比例換算成總數(shù)相加為720的數(shù)。
//若數(shù)據(jù)項(xiàng)和不滿 720 圖樣就變?yōu)樯刃巍?
       //輸入數(shù)據(jù) p(n) 轉(zhuǎn)換成繪圖數(shù)據(jù)值 k(n)
       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
           a=pi/360*i ;   //**  a/2 繪出的是半圓圖形
       if (n==1) cs.SetColor(255,0,250,0);
       if (n==2) cs.SetColor(255,240,140,0);
       if (n==3) cs.SetColor(255,250,0,0);
       if (n==4) cs.SetColor(255,140,40,220);
       if (n==5) cs.SetColor(255,0,150,180);
           x0=(float)(r*cos (a))+dx;     //r=radius
           y0=(float)(r*sin (a))+dy;
           cs.DrawLine (dx,dy,x0,y0);  //逐線繪出
           cs.DrawRect (100,n*50,195,30+n*50); //色標(biāo)

      //** print data as "29.16%"
           s=intToString (p[n]);
           cs.DrawText (s, 60,20+n*50);
           pn=p[n]*10000/720 ;    //擴(kuò)大100, +"%"
           pn=pn/100 ;      //保留2位小數(shù)
           ss1=doubleToString (pn)+"%" ;
           cs.SetColor(255,250,250,250);
           cs.DrawText (ss1,120,20+n*50);
      if (n==1&&setn==1) ss2=ss1 ;
      if (n==2&&setn==2) ss2=ss1 ;
      cs.SetColor(255,0,0,150);    //圖上標(biāo)( n% )
            ma=pi/360*((k[n-1]+k[n])/2) ;
       x1=(float)((r-45)*cos (ma))+dx-30;     
       y1=(float)((r-35)*sin (ma))+dy ;
            cs.DrawText (ss1,x1,y1);

 //*畫(huà)環(huán)圖方法: 中心加圓是環(huán)圖,不加圓是餅圖
     //cs.SetColor(255,250,240,240);
     //cs.DrawCircle(dx,dy,50);    //中心加圓是環(huán)圖      
          cs.Update ();    }   }  //逐線動(dòng)畫(huà)顯示繪制過(guò)程

  //* 演示繪制重點(diǎn)突出的圖塊,暫設(shè)圖例1 和 圖例2
  //* 展示二種畫(huà)法 //***
  //*本圖例預(yù)設(shè)置,可另設(shè)計(jì)圖表點(diǎn)擊選取或其他選項(xiàng)方法 。
 // 預(yù)設(shè) setn=1 ;  0=無(wú),setn1-5 可選。
 //  for (i= k[0] ; i<=k[1] ; i++){      設(shè)置通用 k (n) , kstart  to kend 即可
//*此方法可改寫(xiě)為 setn1-setn5 通用方法。
      sleep (500) ;   //延時(shí)
     if (setn==1){     
     for (i= k[0] ; i<=k[1] ; i++){ //銷(xiāo)隱圖塊,圓底色遮罩
           a=pi/360*i ;   
              cs.SetColor (255,250,240,240);  
           x0=(float)(r*cos (a))+dx;     
           y0=(float)(r*sin (a))+dy;
           cs.DrawLine (dx,dy,x0,y0);   }   
           cs.Update ();      //銷(xiāo)隱
     for (i= k[0] ; i<=k[1] ; i++){    //繪出突出圖塊
           a=pi/360*i ;   
              cs.SetColor (255,0,240,0);  
           x0=(float)(r*cos (a))+dx+8 ;     
           y0=(float)(r*sin (a))+dy-6 ;
           cs.DrawLine (dx+8,dy-6,x0,y0);   //draw out
              cs.SetColor (255,250,250,0);  
              cs.SetTextSize (20);    //show text
           cs.DrawText (ss2,dx+20,dy-42) ;
           cs.Update ();    }    }  //setn=1, 繪出突出色塊
  
     if (setn==2){
     for (i= k[1] ; i<=k[2] ; i++){    //銷(xiāo)隱圖塊
           a=pi/360*i ;   
              cs.SetColor (255,250,240,240);  
           x0=(float)(r*cos (a))+dx;     
           y0=(float)(r*sin (a))+dy;
           cs.DrawLine (dx,dy,x0,y0);   }   
           cs.Update ();      //銷(xiāo)隱

           a=pi/360*((k[1]+k[2])/2) ;  //*** 這是第二種畫(huà)法
            x1=(float)(10*cos (a))+dx ;     
            y1=(float)(10*sin (a))+dy ;
    for (i= k[1] ; i<=k[2] ; i++){    //繪出突出圖塊
           a=pi/360*i ;   
              cs.SetColor (255,240,140,0);  
           x0=(float)(r*cos (a))+x1;       //***
           y0=(float)(r*sin (a))+y1;        //***
          cs.DrawLine (x1,y1,x0,y0);   //***  draw out
              cs.SetColor (255,250,250,0);  
              cs.SetTextSize (20);    //show text
           cs.DrawText (ss2,x1+15,y1+60) ;   //***
           cs.Update ();    }  }    //setn=2, 繪出突出色塊

  //繪制立體字
       cs.SetFillMode (1);   //0不填色,1填色
       cs.SetTextSize (60);   
       cs.SetTextStyle (1);
       cs.SetStrokeWidth(1);
          ss="統(tǒng)計(jì)圖  -  餅圖" ;
       cs.SetColor(255,50,120,20);      
           cs.DrawText (ss,154,524);    //陰影
       cs.SetColor(255,0,200,250);
           cs.DrawText (ss,150,520);    //本字
       cs.SetFillMode (0);   //0不填色,1填色
       cs.SetColor(255,250,0,0);
           cs.DrawText (ss,150,520);    //框線
       cs.Update ();      //顯示
}//PieGraph ()

//**** END *****************

到此這篇關(guān)于使用C語(yǔ)言繪制統(tǒng)計(jì)圖中的餅圖的文章就介紹到這了,更多相關(guān)C語(yǔ)言餅圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++中的指針常量、常量指針與常量指針常量詳解

    C++中的指針常量、常量指針與常量指針常量詳解

    本文深入解析了C++中指針與const的組合使用,包括指針常量、常量指針和常量指針常量三種類(lèi)型,下面就拉介紹一下這三種的使用與區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下
    2026-01-01
  • C++使用適配器模式模擬實(shí)現(xiàn)棧和隊(duì)列

    C++使用適配器模式模擬實(shí)現(xiàn)棧和隊(duì)列

    不論是C語(yǔ)言還是C++,我們都用其對(duì)應(yīng)的傳統(tǒng)寫(xiě)法對(duì)棧和隊(duì)列進(jìn)行了模擬實(shí)現(xiàn),現(xiàn)在我們要用新的方法模擬實(shí)現(xiàn)棧和隊(duì)列,這個(gè)新方法就是適配器模式,文章通過(guò)代碼示例和圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • C++實(shí)現(xiàn)各種排序算法類(lèi)匯總

    C++實(shí)現(xiàn)各種排序算法類(lèi)匯總

    這篇文章主要介紹了C++實(shí)現(xiàn)各種排序算法類(lèi),需要的朋友可以參考下
    2014-07-07
  • 查找算法之二分查找的C++實(shí)現(xiàn)

    查找算法之二分查找的C++實(shí)現(xiàn)

    今天小編就為大家分享一篇關(guān)于查找算法之二分查找的C++實(shí)現(xiàn),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • C 語(yǔ)言快速排序?qū)嵗a

    C 語(yǔ)言快速排序?qū)嵗a

    本文主要介紹了C語(yǔ)言的快速排序算法,這里給大家舉例說(shuō)明并附代碼實(shí)例,需要的朋友可以參考下
    2016-07-07
  • c++難以發(fā)現(xiàn)的bug(有趣)

    c++難以發(fā)現(xiàn)的bug(有趣)

    這篇文章主要介紹了c++難以發(fā)現(xiàn)的bug(有趣)的相關(guān)資料,需要的朋友可以參考下
    2017-10-10
  • C++動(dòng)態(tài)規(guī)劃中關(guān)于背包問(wèn)題講解

    C++動(dòng)態(tài)規(guī)劃中關(guān)于背包問(wèn)題講解

    可能有些讀者有接觸過(guò)動(dòng)態(tài)規(guī)劃,可能也有一些讀者以前完全不知道動(dòng)態(tài)規(guī)劃這個(gè)東西,別擔(dān)心,我這篇文章會(huì)為讀者做一個(gè)入門(mén),好讓讀者掌握這個(gè)重要的知識(shí)點(diǎn)
    2023-03-03
  • Qt中QZXing 的編譯與使用

    Qt中QZXing 的編譯與使用

    本文主要介紹了Qt中QZXing 的編譯與使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C語(yǔ)言五大經(jīng)典排序算法插入、希爾、冒泡、選擇、堆排序完全攻略

    C語(yǔ)言五大經(jīng)典排序算法插入、希爾、冒泡、選擇、堆排序完全攻略

    這篇文章主要介紹了C語(yǔ)言五大經(jīng)典排序算法插入、希爾、冒泡、選擇、堆排序的相關(guān)資料,分別詳細(xì)闡述了它們的排序思想、示例代碼、時(shí)間復(fù)雜度、空間復(fù)雜度和穩(wěn)定性,需要的朋友可以參考下
    2026-03-03
  • C++多重繼承引發(fā)的重復(fù)調(diào)用問(wèn)題與解決方法

    C++多重繼承引發(fā)的重復(fù)調(diào)用問(wèn)題與解決方法

    這篇文章主要介紹了C++多重繼承引發(fā)的重復(fù)調(diào)用問(wèn)題與解決方法,結(jié)合具體實(shí)例形式分析了C++多重調(diào)用中的重復(fù)調(diào)用問(wèn)題及相應(yīng)的解決方法,需要的朋友可以參考下
    2018-05-05

最新評(píng)論

乐陵市| 凌源市| 和林格尔县| 宜丰县| 夹江县| 涟水县| 滦平县| 邯郸县| 剑河县| 无为县| 甘泉县| 黄浦区| 宜宾市| 马公市| 瑞安市| 措勤县| 紫云| 三台县| 珲春市| 定襄县| 莱阳市| 肇庆市| 阿图什市| SHOW| 西盟| 青海省| 建始县| 三原县| 威信县| 镇安县| 清镇市| 高邑县| 南宫市| 久治县| 贞丰县| 宿迁市| 夏河县| 福州市| 会理县| 涞源县| 连州市|