统计图雷达图绘制方法

统计图雷达图绘制方法
常用的统计图有条形图、柱形图、折线图、曲线图、饼图、环形图、扇形图。
前几类图比较容易绘制,饼图环形图绘制较难。
还有一种雷达图的绘制也较难,今提供雷达图的绘制方法供参考。

本方法采用C语言的最基本功能:
( 1) 绘图功能画线,画圆,画长方形。
(2) 界面美工设计,界面文字打印输出。
代码中有详细的注释,通俗易懂,一看就会。

18f21220f0194d61a26e7ebcd2454bae.png 

下面是绘制雷达图的代码:
//变量: 可设置成全局变量或私有变量
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 ;   //显示数据

3组样例逐步绘出:

5baa91c1aa63463c8040feab55281494.png
3e275429db55483584f688104a9ca33f.png 

//*************************  
RadarChart (){    //8. 雷达图绘制方法
      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,240,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(0);    //雷达图底线
              dx=360;  dy=280 ;     //center

int color ;
      for (i=1; i<=11 ; i++){   //底图圆渐变色
               color=200-i*25 ;  L=color+40 ;
          cs.SetColor(255,80,0,color);
          cs.DrawCircle(dx,dy,L);   }  //底图色
          cs.SetColor(255,80,0,40);  
          cs.DrawCircle(dx,dy,20);     //圆心
 
          cs.SetFillMode (0);//0不填色,1填色
          cs.SetColor(255,250,0,0);
          cs.SetTextStyle (0);      
          cs.SetTextSize (16);
     for (i=1; i<=10 ; i++){   //画标线圆和标值
          a=pi/360*i ;
          x0=(float)(200*cos (a))+dx ;
          y0=(float)(200*sin (a))+dy ;
        cs.SetColor(255,250,250,250);
        cs.DrawCircle(dx,dy,i*20);  
            x1=(float)(i*20*cos (a))+dx ;
            y1=(float)(i*20*sin (a))+dy ;
             ss=intToString (i);
        cs.DrawText(ss,x1-8,275);         }  

          cs.SetFillMode (1);//0不填色,1填色
          cs.SetTextSize (18);
          cs.SetColor(255,250,0,0);
    for (i=0; i<=5 ; i++){   //标线六角射线
          a=pi/360*i*120 ;   
          x0=(float)(220*cos(a))+dx ;
          y0=(float)(220*sin(a))+dy ;
          cs.DrawLine (x0,y0,dx,dy);   
          a=pi/360*i*120 ;       //标字
          x1=(float)(230*cos(a))+dx-5 ;
          y1=(float)(-230*sin(a))+dy+5 ;  //逆时针
            ss=intToString (i+1) ;
          cs.DrawText (ss,x1,y1) ;                 }  
               cs.SetTextSize (22);
          cs.DrawText ("1. 语文",610,285) ;                 
          cs.DrawText ("2. 数学",610,310) ;                 
          cs.DrawText ("3. 外语",610,335) ;                 
          cs.DrawText ("4. 政治",610,360) ;                 
          cs.DrawText ("5. 理化",610,385) ;                 
          cs.DrawText ("6. 史地",610,415) ;                 
//********************************
 //雷达图绘制方法:
//input data :  分三组,每组6个分数(或平均分数)
int  p1[6],  p2[6], p3[6] ;
int L ;      //高度,长度
//演示的数据是杜撰的,不代表真实的平均数
            cs.SetStrokeWidth(3);    //雷达图线
 //Draw Group 1 *************
     p1[0]=85;   //0位,起点
     p1[1]=85; p1[2]=68; p1[3]=94; 
     p1[4]=60; p1[5]=75; p1[6]=88;
         cs.SetColor(255,250,0,250);  //group 1
          L=p1[1]*2 ;
          a=pi/360 ;   
          x0=(float)(L*cos(a))+dx ;
          y0=(float)(-L*sin(a))+dy ;
          cs.DrawCircle(x0,y0,5);     
              x2=x0;  y2=y0;
   for (i=1; i<=5; i++){   //六角射线点
          L=p1[i+1]*2 ;
          a=pi/360*i*120 ;   
          x1=(float)(L*cos(a))+dx ;
          y1=(float)(-L*sin(a))+dy ;   //逆时针
           cs.DrawCircle(x1,y1,5);     
           cs.DrawLine (x2,y2,x1,y1);   //连线
             x2=x1;  y2=y1 ;    }
           cs.DrawLine (x2,y2,x0,y0);   //连线0点
           cs.Update ();       
     for (i=1; i<=6; i++){   //打印色标
            ss=intToString (i)+" . "+intToString (p1[i]) ;
            cs.DrawText (ss, 60, i*20+60) ;   }
            cs.DrawText ("Group 1 ", 50, 60) ;   
       sleep (1000);     //逐步展示

 //Draw Group 2 ************
     p2[0]=65 ;
     p2[1]=65; p2[2]=69; p2[3]=70; 
     p2[4]=80; p2[5]=95; p2[6]=78;
          cs.SetColor(255,0,200,0);  //group 2
          L=(int)(p2[1]*2) ;
          a=pi/360 ;   
          x0=(float)(L*cos(a))+dx ;
          y0=(float)(-L*sin(a))+dy ;
          cs.DrawCircle(x0,y0,5);     
              x2=x0;  y2=y0;
   for (i=1; i<=5; i++){   //六角射线点
          L=(int)(p2[i+1]*2) ;
          a=pi/360*i*120 ;   
          x1=(float)(L*cos(a))+dx ;
          y1=(float)(-L*sin(a))+dy ;   //逆时针
           cs.DrawCircle(x1,y1,5);     
           cs.DrawLine (x2,y2,x1,y1);   //连线
             x2=x1;  y2=y1 ;        }
          cs.DrawLine (x2,y2,x0,y0);   //连线回0点
           cs.Update ();       
     for (i=1; i<=6; i++){   //打印色标
            ss=intToString (i)+" . "+intToString (p2[i]) ;
            cs.DrawText (ss, 60, i*20+210) ;   }
            cs.DrawText ("Group 2 ", 50, 210) ;   
      sleep (1000);      //逐步展示

//Draw Group 3  ************
     p3[0]=75 ;
     p3[1]=75; p3[2]=88; p3[3]=85; 
     p3[4]=97; p3[5]=70; p3[6]=68;
          cs.SetColor(255,250,200,0);  //group 3
          L=p3[1]*2 ;
          a=pi/360 ;   
          x0=(float)(L*cos(a))+dx ;
          y0=(float)(-L*sin(a))+dy ;
          cs.DrawCircle(x0,y0,5);     
              x2=x0;  y2=y0;
   for (i=1; i<=5; i++){   //六角射线点
          L=p3[i+1]*2 ;
          a=pi/360*i*120 ;   
          x1=(float)(L*cos(a))+dx ;
          y1=(float)(-L*sin(a))+dy ;   //逆时针
           cs.DrawCircle(x1,y1,5);     
          cs.DrawLine (x2,y2,x1,y1);   //连线
             x2=x1;  y2=y1 ;        }
          cs.DrawLine (x2,y2,x0,y0);   //连线回0点
      for (i=1; i<=6; i++){   //打印色标
            ss=intToString (i)+" . "+intToString (p3[i]) ;
            cs.DrawText (ss, 60, i*20+360) ;   }
            cs.DrawText ("Group 3 ", 50, 360) ;   

//draw title
      cs.SetFillMode (1);//0不填色,1填色
        cs.SetTextStyle (1);
       cs.SetStrokeWidth(1);
       cs.SetTextSize (26);
      cs.SetColor(255,0,0,250);      
      cs.DrawText ("Radar Chart 📊",500,60) ;
      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 ();
}// RadarChart ()


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2803515.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

GoLand 相关

goland 下载依赖 go mod tidy&#xff1a;保持依赖整洁 go mod tidy 命令的作用是清理未使用的依赖&#xff0c;并更新 go.mod 以及 go.sum 文件。 go mod tidy 和 go mod vendor 两个命令是维护项目依赖不可或缺的工具。go mod tidy 确保了项目的 go.mod 文件精简且准确&…

精通Django模板(模板语法、继承、融合与Jinja2语法的应用指南)

模板&#xff1a; 基础知识&#xff1a; ​ 在Django框架中&#xff0c;模板是可以帮助开发者快速⽣成呈现给⽤户⻚⾯的⼯具模板的设计⽅式实现了我们MVT中VT的解耦(M: Model, V:View, T:Template)&#xff0c;VT有着N:M的关系&#xff0c;⼀个V可以调⽤任意T&#xff0c;⼀个…

【Git企业实战开发】Git常用开发流操作总结

【Git企业实战开发】Git常用开发流操作总结 大家好 我是寸铁&#x1f44a; 总结了一篇Git常用开发流操作总结的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 现在刚做项目的伙伴&#xff0c;可能你之前学过git&#xff0c;但是一实战发现不熟悉 没关系&#xff0c;看寸铁这篇…

vscode与vue环境配置

一、下载并安装VScode 安装VScode 官网下载 二、配置node.js环境 安装node.js 官网下载 会自动配置环境变量和安装npm包(npm的作用就是对Node.js依赖的包进行管理)&#xff0c;此时可以执行 node -v 和 npm -v 分别查看node和npm的版本号&#xff1a; 配置系统变量 因为在执…

【计算机考研择校】双非跨考推荐院校名单

各个层次计算机考研院校的推荐汇总&#xff1a; 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 本人双非科班出身备考408成功上岸&#xff0c;在这里也想给想考408的学弟学妹们一些很中肯的&#xff0c;学习建议。 我是科班水过408的四门课 说实话&am…

C#中的关键字params的用法

C#中有一个关键字params&#xff0c;它相对于一些主要关键字来说&#xff0c;还算是较为低频的&#xff0c;但也会用到。我们可以了解和学习下。 一、定义及约束 params关键字的作用在于可以让方法参数的数目可变。 params的参数类型必须是一维数组。 一旦在方法加入了para…

制造业客户数据安全解决方案(数据防泄密需求分析)

机械行业是历史悠久的工业形式&#xff0c;与国民经济密切相关&#xff0c;属于周期性行业&#xff0c;是我国最重要的工业制造行业之一。即使网络经济与IT信息技术在世界范围内占据主导地位&#xff0c;依然离不开一个发达的、先进的物质基础&#xff0c;而机械行业正是为生成…

Unity编辑器内工程文件重命名|Project视图文件名修改

Unity编辑器内文件重命名 前言大项内容一使用方法代码展示 总结 前言 本文代码可以一键更改Project视图的文件名字 在当前文件名的状态下增加一段字符区分文件。 大项内容一 功能是因为在给其他人导入项目资源时有重复的资源的时候&#xff0c;资源会产生覆盖的问题。所以直…

【前端素材】推荐优质后台管理系统Powerx平台模板(附源码)

一、需求分析 1、定义 后台管理系统是一种用于管理和监控网站、应用程序或系统的在线工具。它通常是通过网页界面进行访问和操作&#xff0c;用于管理网站内容、用户权限、数据分析等。后台管理系统是网站或应用程序的控制中心&#xff0c;管理员可以通过后台系统进行各种管理…

【PyTorch][chapter 16][李宏毅深度学习][Neighbor Embedding][t-SNE]

前言&#xff1a; 前面LLE 讲了两个点在高维空间距离相近&#xff0c;通过降维后也要保持这种关系 但是如果两个点在高维空间距离很远&#xff08;不属于K邻近&#xff09;,降维后有可能叠加在一起了. t-SNE(t-Distributed Stochastic Neighbor Embedding)是一种降维技术&…

ubuntu20配置protobuf 2.5.0

python安装protobuf包 sudo pip2 install protobuf2.5.0github克隆获取安装包 wget https://github.com/protocolbuffers/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz解压并进入该目录 tar -zxvf Protobuf-2.5.0.tar.gz cd protobuf-2.5.0配置安装环境 sudo …

3.测试教程 - 基础篇

文章目录 软件测试的生命周期软件测试&软件开发生命周期如何描述一个bug如何定义bug的级别bug的生命周期如何开始第一次测试测试的执行和BUG管理产生争执怎么办&#xff08;处理人际关系&#xff09; 大家好&#xff0c;我是晓星航。今天为大家带来的是 测试基础 相关的讲解…

rt-thread 目录结构

移植适配可能需要修改的部分用红色标记&#xff0c;蓝色表示还需继续调查&#xff0c;绿色会在bring up后修改

【PostgreSQL】Windows安装PostgreSQL数据库图文详细教程

Windows安装PostgreSQL数据库图文详细教程 一、前言二、PostgreSQL简介三、软件下载四、安装步骤4.1 安装向导4.2 选择安装目录4.3 选择组件4.4 选择数据存放目录4.5 选择密码4.6 选择端口号4.7 等待安装完成4.8 取消勾选&#xff0c;安装完成 五、启动教程5.1 搜索pgAdmin4&am…

我们有在线社区啦!快来加入一起玩儿~

&#x1f64c;大噶好呀&#xff01;春节假期转瞬即逝&#xff0c;小陈已经正式开工啦&#xff5e;虽然不知道大家啥时候收假&#xff0c;但是 RTE 开发者社区㊗️诸位&#xff1a; &#x1f9e7;&#x1f432;&#x1f647;2024 开工大吉&#x1f647;&#x1f432;&#x1f9…

编译原理第一章概述,文法,语言学习总结

1.编译程序&#xff1a; 翻译程序&#xff0c;源语言翻译为目标语言 C语言 ——>汇编语言 2.逻辑过程 词法分析 语法分析 语义分析 中间代码生成优化 目标代码生成优化 词法分析&#xff1a; 最基本的单词分析出来 语法分析&#xff1a;看组成…

Gradle统一管理依赖

背景 随着项目越来越大&#xff0c;module 越来越多&#xff0c;依赖的库也越来越多&#xff0c;依赖管理也越来越混乱。 我们一般会有以下需求&#xff1a; 1. 项目依赖统一管理&#xff0c;在单独文件中配置 2. 不同 Module 中的依赖版本号统一 管理 Gradle 依赖 说明&a…

通过platform总线驱动框架编写LED灯的驱动,编写应用程序测试,发布到CSDN

效果图 设备树代码 myplatform{compatible "hqyj,myplatform";led1-gpio<&gpioe 10 0>;led2-gpio<&gpiof 10 0>;led3-gpio<&gpioe 8 0>; interrupt-parent <&gpiof>;interrupts<9 0>;reg<0X12345678 …

抖店商家想要抓住2024年第一波流量,你需要这样做!

大家好&#xff0c;我是电商小布。 春节假期结束了&#xff0c;我们的工作也开始走入正轨当中了。 对于停工一段时间的抖店商家来说&#xff0c;想要在年后抓住第一波流量&#xff0c;该怎么做呢&#xff1f; 简单一点说&#xff0c;还是在运营上。 一、检查店铺类目情况 …

数字电路 第一章—第三节(逻辑函数的化简方法)

一、逻辑函数的标准与或式和最简式 1、标准与或表达式 &#xff08;1&#xff09;下图给出了逻辑函数Y的标准与或表达式&#xff0c;在表达式中每一个乘积项都具有标准形式&#xff0c;这种标准形式的乘积项称为最小项。 &#xff08;2&#xff09;最小项是逻辑代数中的一个…