统计图曲线图绘制方法
常用的统计图有条形图、柱形图、折线图、曲线图、饼图、环形图、扇形图。
前几类图比较容易绘制,饼图环形图绘制较难。
曲线图的曲线绘制较难,今提供曲线图的绘制方法供参考。
本方法采用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.SetColphpor (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 python多条曲线 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); //阴影 http://www.devze.com 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,5http://www.devze.com30); //框线 cs.Update (); }//CurveGraph7 ()
到此这篇关于C语言绘制曲线图的示例代码的文章就介绍到这了,更多相关C语言曲线图内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论