统计图环形图绘制方法
常用的统计图有条形图、柱形图、折线图、曲线图、饼图、环形图、扇形图。
前几类图比较容易绘制,饼图环形图绘制较难。
在网上看到一种类很有艺术感的环形图图例,一时手痒也就搞了一个绘制方法。
本方法采用C语言的最基本功能:
(1) 绘图功能画线,画圆,画长方形。
(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 ; //显示百分比数 " 87% "
环形图,C形图的代码 PieGraph1 ( ):
PieGraph1 (){
//环形图:很有艺术感的图表,也可称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);
p[1]=87; p[2]=65; p[3]=76; //intput data
for (n=1; n<=3 ; n++){ //data=3
r=200-n*40 ; //r=radius
pn=p[n]/10*72+180;
print "pn= ",pn;
for (i=180 ; i<=pn; i++){ //画图案 颜色可自定
a=pi/360*i ;
if (n==1) cs.SetColor(255,180,220,250); //设色
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%", 加"%"
ss1=intToString (p[n])+"%" ;
cs.SetTextSize (20);
cs.DrawText (ss1,dx+25,dy-195+n*40);
cs.SetColor(255,250,250,250);
cs.DrawText (ss1,130,n*40+57);
//动画式显示效果:逐点更新绘出
cs.Update (); } }
//打印统计图题标
cs.SetFillMode (1); //0不填色,1填色
cs.SetTextSize (60);
cs.SetTextStyle (1);
cs.SetStrokeWidth(1);
ss="统计图 - 环形图" ;
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 ()
//**** END *****************