创意艺术信息图表绘制方法(六边形图)

创意艺术信息图表绘制方法(六边形图)
在网络科技发展进步的当下,原来一些传统的统计图表都有了进一步的创新。以前企业的PPT都依赖微软的各应用软件来制作图表,现时企业的PPT展示的图表应用不再满足于Excle,Word等的图表绘制方法,进而使用一些第三方应用软件来制作新颖漂亮的图表。由此而有许多图表制作的应用软件面市。这些图表很吸引眼球,我对此也很感兴趣,故试着写了一些各种式样图表的绘制方法,供有同好的同行参考和评论。

新样式的统计图除了有复合式,堆叠式,展开式等等,还加入了新的概念,新的形式。新的名称是信息图表,把各种需要表达的东西,如理念含义,样本值的数量,统计的目的,多重信息等等用图像图表图案组合起来,展现给受众。此类信息图主要是表达,展示和传播。在美工艺术方面创意创新,有许多独到新颖的样式,给人一个赏心悦目的感受。

在统计图表的样本值的计算方面,样本值的量的表现是一个方面,重点是量的对比,以及量的表现方法,这是体现统计图表目的的主要意义。
今在此提供一种新颖漂亮的信息图表的绘制方法,对于统计样本数据使用者自行添加。 

如何绘制六边形各个能绘画的应用程序和编程语言都有自己的封装的函数,然而由于我喜欢动脑,喜欢电脑绘画,就会设计一些自己的方法。在设计绘制方法时因为要多次绘制六边形,故写了4个通用函数hexagon,画笔颜色是当前色,只要传入坐标参数x, y和边长参数L就可绘出六边形。
此方法供参考。

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

0c6f362f916a4b019161882bc93ef334.png
//*************************  
//网上看到一种六边形的艺术信息图表,感到六边形较难绘制, 就试着绘制成了。
ArtGraphics9 (){  //六边形艺术信息图:顶角向上
      cs.ClearDraw (0,src);   //清屏
      clearOutput();
      selectStyle () ; //图例样式选项设置
      cs.SetFillMode (1);//0不填色,1填色
         cs.SetColor (255,230,250,250);
      cs.DrawRect (0,2,720,740);   //back board
         cs.SetColor (255,140,140,140);
      cs.DrawRect (24,24,706,706);   //back      
         cs.SetColor (255,220,250,250);
      cs.DrawRect (20,20,700,700);   //back 
      cs.SetFillMode (0);//0不填色,1填色
         cs.SetColor (255,0,0,250);
      cs.DrawRect (20,20,700,700);   //back 
      cs.DrawRect (26,25,694,695);   //back 
 
  //艺术统计图样例: 图例 (六边形艺术图)
        cs.SetFillMode (1);//0不填色,1填色
        cs.SetStrokeWidth(2);    //线
        cs.SetTextStyle (0);  //1 粗体字
 
//绘制六边形图:
        cs.SetStrokeWidth(2);    //线
        cs.SetColor(255,250,0,0);  
        cs.DrawCircle (360, 330, 5);      //圆底色
        cs.SetColor(255,230,230,230);  
        cs.DrawCircle (360, 330, 273);      //圆底色
 
        cs.SetColor(255,250,250,250);  
             dx=360 ;   dy=330 ;   r=180 ;  L=100 ;
          a=pi/360 ;   
          x=(float)(r*cos(a))+dx ;
          y=(float)(-r*sin(a))+dy ;   //逆时针
              hexagon1 () ;       
          a=pi/360*1*120 ;   
          x=(float)(r*cos(a))+dx ;
          y=(float)(-r*sin(a))+dy ;   //逆时针
              hexagon1 () ;       
          a=pi/360*2*120 ;   
          x=(float)(r*cos(a))+dx ;
          y=(float)(-r*sin(a))+dy ;   //逆时针
              hexagon1 () ;       
          a=pi/360*3*120 ;   
          x=(float)(r*cos(a))+dx ;
          y=(float)(-r*sin(a))+dy ;   //逆时针
              hexagon1 () ;       
          a=pi/360*4*120 ;   
          x=(float)(r*cos(a))+dx ;
          y=(float)(-r*sin(a))+dy ;   //逆时针
              hexagon1 () ;       
          a=pi/360*5*120 ;   
          x=(float)(r*cos(a))+dx ;
          y=(float)(-r*sin(a))+dy ;   //逆时针
              hexagon1 () ;       

 

//最后绘制面上的六彩色环和色标
  for (n=1; n<=6 ; n++){   //data=6
           k0=n*120+180+3;  k1=k0+120-6 ;  r=150 ;
       for (i= k0; i<=k1; i++){  
             a=pi/360*i ;   
       if (n==1) cs.SetColor(255,250,0,0);
       if (n==2) cs.SetColor(255,250,180,0);
       if (n==3) cs.SetColor(255,0,250,0);
       if (n==4) cs.SetColor(255,0,220,250);
       if (n==5) cs.SetColor(255,180,80,230);
       if (n==6) cs.SetColor(255,250,120,200);
            x0=(float)(r*cos (a))+dx ;     //r=radius
            y0=(float)(r*sin (a))+dy ;     //顺时针
            x1=(float)((r-70)*cos (a))+dx ;     //r=radius
            y1=(float)((r-70)*sin (a))+dy ;     //顺时针
      cs.DrawLine (x1,y1, x0,y0);      

               ma=pi/360*((k0+k1)/2) ;   
            x2=(float)((r-20)*cos (ma))+dx ;     //r=radius
            y2=(float)((r-20)*sin (ma))+dy ;     //逆时针
       cs.DrawCircle (x2,y2, 40);      //标圆
        //动画显示逐线绘出  加色标
      cs.DrawRect (40,n*30+20 ,100,n*30+45); 
        cs.SetColor(255,250,250,250);  
        cs.DrawText ("text", 50,70) ;
             //cs.Update () ;   //动画式展示
                 }    } //show 饼图

  //中心加3个六边形:0=linemode,  1=Fullmode
        cs.SetColor(255,250,250,250);  
      x=360 ;  y=330 ;  L=100 ;  //以3参数绘六边形
        hexagon1 () ;
        cs.SetColor(255,180,180,180);  
      x=360 ;  y=330 ;  L=90 ;  
         hexagon0 () ;
     cs.SetColor(255,220,220,220);  
      x=360 ;  y=330 ;  L=80 ;  
        hexagon1 () ;

 for (n=1; n<=6 ; n++){   //data=6
             a=pi/360*n*120;   r=130 ;
             x0=(float)(r*cos (a))+dx ;     //r=radius
             y0=(float)(- r*sin (a))+dy ;     //逆时针
        cs.SetColor(255,250,250,250);  
         cs.DrawCircle (x0,y0, 32);     } //标圆底色

       cs.SetTextStyle (1);
       cs.SetTextSize (38);
        cs.SetColor(255,250,0,0);      
     cs.DrawText ("01",208,343) ;
     cs.DrawText ("🎹",100,310) ;
         cs.SetColor(255,0,250,250);      
      cs.DrawText ("04",470,343) ;
      cs.DrawText ("🎻",560,310) ;
         cs.SetColor(255,250,200,0);      
      cs.DrawText ("02",273,230) ;
      cs.DrawText ("🎺",190,160) ;
           cs.SetColor(255,0,250,0);      
      cs.DrawText ("03",403,230) ;
      cs.DrawText ("💽",480,165) ;
           cs.SetColor(255,180,80,230);      
      cs.DrawText ("05",403,455) ;
      cs.DrawText ("📀",195,480) ;
           cs.SetColor(255,250,0,250);      
      cs.DrawText ("06",273,455) ;
      cs.DrawText ("📻",480,480) ;
       cs.SetTextSize (50);
     cs.DrawText ("🎧",330,320) ;
     cs.DrawLine (300,360,420,360);
          cs.SetTextSize (20);
     cs.DrawText ("Infographics",305,350) ;
     cs.DrawText ("2024 ",340,385) ;
        cs.SetTextStyle (0);
        cs.SetColor(255,0,200,250);  
        cs.DrawText ("Put text ", 240,130) ;
        cs.DrawText ("text ... ...", 240,150) ;
        cs.DrawText ("text ... ...", 240,170) ;
        cs.DrawText ("Put text ", 380,130) ;
        cs.DrawText ("Put text ", 240,500) ;
        cs.DrawText ("Put text ", 380,500) ;
        cs.DrawText ("Put text ", 105,340) ;
        cs.DrawText ("Put text ", 540,340) ;
 
//题标:  艺术立体字制作
        cs.SetFillMode (1);//0不填色,1填色
        cs.SetTextStyle (1);
        cs.SetStrokeWidth(1);
        cs.SetTextSize (28);
        cs.SetColor(255,0,0,250);      
      cs.DrawText ("Infographics 📊",480,60) ;
      cs.SetTextSize (42);
         ss="创意艺术图:六边形艺术图" ;
      cs.SetColor(255,50,120,20);      //立体字
           cs.DrawText (ss,114,654);    //阴影
      cs.SetColor(255,0,250,0);
           cs.DrawText (ss,110,650);    //本字
      cs.SetFillMode (0);//0不填色,1填色
      cs.SetColor(255,250,150,0);
           cs.DrawText (ss,110,650);    //框线
       cs.Update ();
}//ArtGraphics9 ()


hexagon0 (){  // line mode 竖式  0位 12点钟方向
//flaot x, y, L  
        a=pi/360-100 ;   
          x3=(float)(L*cos(a))+x ;   //起始0点
          y3=(float)(-L*sin(a))+y ;
             x5=x3 ;   y5=y3 ;

   for (i=1; i<=5; i++){   //六角射线点
          a=pi/360*i*120-100 ;   
          x4=(float)(L*cos(a))+x ;
          y4=(float)(-L*sin(a))+y ;   //逆时针
          cs.DrawCircle(x4,y4,1);     
          cs.DrawLine (x5,y5,x4,y4);   //连线 
             x5=x4;  y5=y4 ;    }   

         cs.DrawLine (x5,y5,x3,y3);   //连线0点
 }//hexagon0 ()

hexagon1 (){  //六边形,竖式,Fillmode 填色
 //flaot x, y, L  
//先从顶点12点钟方向,向下填充
         a=pi/360*1*120-100 ;   nnnnn
          x4=(float)(L*cos(a))+x ;
          y4=(float)(-L*sin(a))+y ;   //逆时针
    //  cs.DrawCircle (x4,y4, 5);      
          a=pi/360-100;   //2点钟
          x3=(float)(L*cos(a))+x ;   //起始0点
          y3=(float)(-L*sin(a))+y ;
    //  cs.DrawCircle (x3,y3, 5);      //标点
          a=pi/360*2*120-100 ;   
          x5=(float)(L*cos(a))+x ;
          y5=(float)(-L*sin(a))+y ;   //逆时针
  //  cs.DrawCircle (x5,y5, 5);      

     for (n=1; n<=L; n++){   //六角射线
         cs.DrawLine (x4,y4+n,x5,y5+n);     //连线
         cs.DrawLine (x4,y4+n,x3,y3+n);
                 } //连线

  //再从6点钟方向,向上填充
      a=pi/360-100 ;      //5点钟
          x4=(float)(L*cos(a))+x ;
          y4=(float)(L*sin(a))+y ;   //顺时针
      //cs.DrawCircle (x4,y4, 5);      
          a=pi/360*1*120-100;   //6点钟
          x3=(float)(L*cos(a))+x ;   //起始0点
          y3=(float)(L*sin(a))+y ;
    //  cs.DrawCircle (x3,y3, 5);      
          a=pi/360*2*120-100 ;   //7点钟
          x5=(float)(L*cos(a))+x ;
          y5=(float)(L*sin(a))+y ;   //顺时针
   //   cs.DrawCircle (x5,y5, 5);     

     for (n=1; n<=L; n++){   //六角射线
         cs.DrawLine (x5,y5-n,x3,y3-n);     //连线
         cs.DrawLine (x4,y4-n,x3,y3-n);
                 } //连线
 }//hexagon1 ()

hexagon10 (){  //line mode  横式  0位 3点钟方向
//flaot x, y, L
        a=pi/360+m;   
          x3=(float)(L*cos(a))+x ;   //起始0点
          y3=(float)(-L*sin(a))+y ;
             x5=x3 ;   y5=y3 ;

   for (i=1; i<=5; i++){   //六角射线点
          a=pi/360*i*120 ;   
          x4=(float)(L*cos(a))+x ;
          y4=(float)(-L*sin(a))+y ;   //逆时针
          cs.DrawCircle(x4,y4,1);     
          cs.DrawLine (x5,y5,x4,y4);   //连线 
             x5=x4;  y5=y4 ;    }   

         cs.DrawLine (x5,y5,x3,y3);   //连线0点
 }//hexagon10 ()

hexagon11 (){  //Fillmode  横式 填色
//flaot x, y, L  
//横式六边形,右起始点3点钟方向,向左填充
       a=pi/360*1*120 ;   
          x4=(float)(L*cos(a))+x ;
          y4=(float)(-L*sin(a))+y ;   //逆时针
  //   cs.DrawCircle (x4,y4, 5);      
          a=pi/360;   
          x3=(float)(L*cos(a))+x ;  //起始点,3点钟方向
          y3=(float)(-L*sin(a))+y ;
    // cs.DrawCircle (x3,y3, 5);      //标点
          a=pi/360*5*120 ;   
          x5=(float)(L*cos(a))+x ;
          y5=(float)(-L*sin(a))+y ;   //逆时针
   //  cs.DrawCircle (x5,y5, 5);      
     for (n=1; n<=L; n++){   //六角射线
         cs.DrawLine (x4-n,y4,x3-n,y3);     //连线
         cs.DrawLine (x5-n,y5,x3-n,y3);
                 } //连线

 //再从左起,始点9点钟方向,向右填充
     a=pi/360*2*120 ;   
          x4=(float)(L*cos(a))+x ;
          y4=(float)(-L*sin(a))+y ;   //逆时针
  //   cs.DrawCircle (x4,y4, 5);      
          a=pi/360*3*120 ;   
          x3=(float)(L*cos(a))+x ;  //左起点,9点钟方向
          y3=(float)(-L*sin(a))+y ;
     //cs.DrawCircle (x3,y3, 5);      
          a=pi/360*4*120 ;   
          x5=(float)(L*cos(a))+x ;
          y5=(float)(-L*sin(a))+y ;   //逆时针
   //  cs.DrawCircle (x5,y5, 5);      
     for (n=1; n<=L; n++){   //六角射线
         cs.DrawLine (x4+n,y4,x3+n,y3);     //连线
         cs.DrawLine (x5+n,y5,x3+n,y3);
                 } //连线

 }//hexagon11 ()

//**** End ********
    

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声。

设计一个动物声音“模拟器”&#xff0c;希望模拟器可以模拟许多动物的叫声。要求如下&#xff1a; &#xff08;1&#xff09;编写接口Animal Animal接口有2个抽象方法cry()和getAnimaName()&#xff0c;即要求实现该接口的各种具体动物类给出自己的叫声和种类名称。 &…

【Linux系列】tree和find命令

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

腾讯云TDSQL(MySQL版)和(PostgreSQL版)TCP认证介绍

腾讯云TDSQL&#xff08;MySQL版&#xff09;TCP认证介绍 数据库交运维高级工程师-腾讯云TDSQL&#xff08;MySQL版&#xff09;-课程体系-云贝教育&#xff08;yunbee.net&#xff09; 培训概述 数据库交付运维高级工程师-腾讯云TDSQL&#xff08;MySQL版&#xff09;培训&…

PetaLinux使用简介

1 概述 PetaLinux 工具提供在 Xilinx 处理系统上定制、构建和调配嵌入式 Linux 解决方案所需的所有组件。该解决方案旨在提升设计生产力&#xff0c;可与 Xilinx 硬件设计工具配合使用&#xff0c;以简化针对 Versal、Zynq™ UltraScale™ MPSoC、Zynq™ 7000 SoC、和 MicroBl…

基于ssm的家庭食谱管理系统(java项目+文档+源码)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的家庭食谱管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 家庭食谱管理系统的主要使用者…

前端 - 基础 表单标签 - 表单元素 input - type 属性 ( 单选按钮和复选按钮 )

input 标签 type 属性 &#xff0c;上一篇讲了 输入框 和 密码框 这节看看 单选按钮 和 复选 按钮 目录 单选按钮 &#xff1a; 复选按钮 # 看上图就可以看到 单选按钮 -- radio 和 复选 按钮 -- checkbox 单选按钮 &#xff1a; 所谓单选按钮就是 有时…

Can‘t connect to server on ‘localhost‘ (10061)

问题&#xff1a;电脑关机重启后&#xff0c;连接不上mysql了&#xff0c;报错信息如下&#xff1a;2002 - Cant connect to server on localhost (10061)解决办法&#xff1a;很大的原因是mysql服务没有启动&#xff0c;需要你重启一下mysql&#xff1a; 以管理员的身份运行cm…

R使用netmeta程序包实现二分类数据的频率学网状meta分析

该研究检索了Cochrane对照试验中心注册&#xff0c;CINAHL&#xff0c;Embase&#xff0c;LILACS数据库&#xff0c;MEDLINE&#xff0c;MEDLINEIn-Process&#xff0c;PsycINFO&#xff0c;监管机构网站&#xff0c;以及从一开始就发布和未发表的双盲随机对照试验的国际注册20…

重构智能防丢产品,苹果Find My技术引领市场发展

目前市场上最主要的防丢技术是蓝牙防丢和GPS防丢&#xff0c;蓝牙防丢是通过感应防丢器与绑定手机的距离来实现防丢的。一般防丢会默认设置一个最远安全距离&#xff0c;超过这个安全距离后&#xff0c;与手机蓝牙信号断开&#xff0c;触发防丢报警&#xff0c;用户根据防丢报警…

百度贝塞尔曲线证码识别代码

一、前言 百度出了如图所示的验证码&#xff0c;需要拖动滑块&#xff0c;与如图所示的曲线轨迹进行重合。经过不断研究&#xff0c;终于解决了这个问题。我把识别代码分享给大家。 下面是使用selenium进行验证的&#xff0c;这样可以看到轨迹滑动的过程&#xff0c;如果需要…

Leetcode 234. 回文链表

心路历程&#xff1a; 一开始想到用栈&#xff0c;但是发现还是得到中点后才开始判断&#xff0c;时间空间没什么区别&#xff0c;还不如直接获取数组后正逆对比&#xff1b; 看了网上的O&#xff08;1&#xff09;空间复杂度方法&#xff0c;意思是按照奇数偶数判断完之后&am…

保护JavaScript代码安全性:探究JScrambler、JShaman、JSFack等常用加密混淆工具

摘要 本篇技术博客将介绍五款常用且好用的在线JavaScript加密混淆工具&#xff0c;包括 jscrambler、JShaman、jsfack、freejsobfuscator 和 jjencode。通过对这些工具的功能及使用方法进行详细解析&#xff0c;帮助开发人员更好地保护和加密其 JavaScript 代码&#xff0c;提…

142.环形链表

给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整…

Spring Boot集成JPA快速入门demo

1.JPA介绍 JPA (Java Persistence API) 是 Sun 官方提出的 Java 持久化规范。它为 Java 开发人员提供了一种对象/关联映射工具来管理 Java 应用中的关系数据。他的出现主要是为了简化现有的持久化开发工作和整合 ORM 技术&#xff0c;结束现在 Hibernate&#xff0c;TopLink&am…

保护前端代码安全:探索JScrambler、JSFack、IpaGuard等五款JavaScript加密工具

摘要 本篇技术博客将介绍五款常用且好用的在线JavaScript加密混淆工具&#xff0c;包括 jscrambler、JShaman、jsfack、freejsobfuscator 和 jjencode。通过对这些工具的功能及使用方法进行详细解析&#xff0c;帮助开发人员更好地保护和加密其 JavaScript 代码&#xff0c;提…

websocketpp上手笔记-Windows安装

WebSocketpp是什么 最近手上有一个c项目&#xff0c;需要用websocket从服务器端收内容。于是网上找了圈&#xff0c;发现WebSocketpp库可以做websocket的客户端。 WebSocketpp也叫WebSocket&#xff0c;github地址是&#xff1a;https://github.com/zaphoyd/websocketpp&…

KMP字符串匹配算法

本文用于记录个人算法竞赛学习&#xff0c;仅供参考 目录 一.KMP 二.next数组&#xff08;前缀表&#xff09; 三.具体实现模板 四.题解 先来看一个问题 28. 找出字符串中第一个匹配项的下标 - 力扣&#xff08;LeetCode&#xff09; 对于这个问题&#xff0c;一般暴力做法…

三、Java的流程控制

1、Java的顺序流程控制 程序由一系列语句组成。 Java虽然是一种面向对象的计算机语言,但是在一个局部,例如方法体内,快语句内仍然需要面向过程的程序设计和方法。 作为面向过程程序设计精华的结构化程序设计思想,仍然是面向对象程序设计方法的基石。 1)表达式语句 由运…

浪潮分布式存储AS13000G6-M36、NF5466M6硬盘背板改扩配参考

AS13000G6分布式存储机型描述 浪潮分布式存储AS13000G6-M36机型&#xff0c;实际就是NF5466M6加上分布式存储软件的一体机产品&#xff0c;而NF5468M6也就是NF5280M6的主板加4U机箱结构。 该机器最大的特点是在4U空间内可以配置36块3.5寸大盘&#xff0c;硬盘背板为3.5*12&…

B82793S0513N201 共模扼流圈滤波器电感 51uH 800mA

B82793S0513N201是一款由TDK(东电化)公司生产的数据线扼流圈&#xff0c;用于电信领域的xDSL变压器。 制造商: TDK 产品品种: 共模扼流圈/滤波器 RoHS: 详细信息 系列: B82793S 安装风格: PCB Mount 端接类型: SMD/SMT 通道数量: 1 Channel 电感: 51 uH 容差: 30 % 最大直流电…