一、绘制折线图

glutBitmapCharacter(GLUT_BITMAP_8_BY_13,label[j])函数可以绘制GLUT位图字符,第一个参数是GLUT中指定的特定字形集,第二个参数是要写入的单个字符;

#include <glut.h> 

GLsizei windowWidth=600,windowHeight=600;
GLubyte label[36]={'O','n','e', 'T','w','o', 'T','h','r', 'F','o','u',
'F','i','v', 'S','i','x', 'S','e','v', 'E','i','g',
'N','i','e', 'T','e','n', 'E','l','e', 'T','w','e',};
GLint dataValue[12]={452,368,214,543,328,193,322,436,257,268,473,467}; void Init()
{
glClearColor(1,1,1,1);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0,windowWidth,0,windowHeight);
} void LineImage()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0,0,1);
glLineWidth(2);
//绘制折线图
glBegin(GL_LINE_STRIP);
{
for(int i=0;i<12;i++)
{
glVertex2i(20+i*50,dataValue[i]);
}
}
glEnd(); //绘制标记点
glColor3f(1,0,0);
for(int i=0;i<12;i++)
{
glRasterPos2i(15+i*50,dataValue[i]-5);
glutBitmapCharacter(GLUT_BITMAP_8_BY_13,'*');
} glColor3f(0,0,0);
//绘制序列
for(int i=0;i<12;i++)
{
glRasterPos2i(15+i*50,150);
for(int j=i*3;j<i*3+3;j++)
{
glutBitmapCharacter(GLUT_BITMAP_8_BY_13,label[j]);
}
}
glFlush();
} void ReshapFunction(GLint x,GLint y)
{
glClear(GL_COLOR_BUFFER_BIT);
} int main(int argc, char *argv[])
{
glutInit(&argc, argv); //初始化GLUT
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(500, 200);
glutInitWindowSize(windowWidth, windowHeight);
glutCreateWindow("OpenGL");
Init();
glutDisplayFunc(&LineImage); //回调函数
glutReshapeFunc(ReshapFunction);
glutMainLoop(); //持续显示,当窗口改变会重新绘制图形
return 0;
}

折线图:

二、柱状图

使用函数glRecti (GLint x1, GLint y1, GLint x2, GLint y2)可以方便的绘制一个填充的矩形区域,第一二个参数是矩形区域的左下角起点,第二三个参数是右上角顶点。

#include <glut.h> 

GLsizei windowWidth=600,windowHeight=600;
GLubyte label[36]={'O','n','e', 'T','w','o', 'T','h','r', 'F','o','u',
'F','i','v', 'S','i','x', 'S','e','v', 'E','i','g',
'N','i','e', 'T','e','n', 'E','l','e', 'T','w','e',};
GLint dataValue[12]={452,368,214,543,328,193,322,436,257,268,473,467}; void Init()
{
glClearColor(1,1,1,1);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0,windowWidth,0,windowHeight);
} void LineImage()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0,0,1); for(int i=0;i<12;i++)
{
glRecti(20+i*50,170,30+i*50,dataValue[i]);
} glColor3f(0,0,0);
//绘制序列
for(int i=0;i<12;i++)
{
glRasterPos2i(15+i*50,150);
for(int j=i*3;j<i*3+3;j++)
{
glutBitmapCharacter(GLUT_BITMAP_8_BY_13,label[j]);
}
}
glFlush();
} int main(int argc, char *argv[])
{
glutInit(&argc, argv); //初始化GLUT
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(500, 200);
glutInitWindowSize(windowWidth, windowHeight);
glutCreateWindow("OpenGL");
Init();
glutDisplayFunc(&LineImage); //回调函数
glutMainLoop();
return 0;
}

柱状图:

三、饼图

#include <glut.h>
#include <stdlib.h>
#include <math.h> GLsizei windowWidth=600,windowHeight=600;
GLint dataValue[12]={452,368,214,543,328,193,322,436,257,268,473,467}; void Init()
{
glClearColor(1,1,1,1);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0,windowWidth,0,windowHeight);
} void CircleImage()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0,0,1);
glPointSize(2);
glBegin(GL_POINTS);
{
for(float i=0.0f;i<2*3.1415926f;i+=0.001)
{
glVertex2f((windowWidth/3)*cos(i)+windowWidth/2,(windowHeight/3)*sin(i)+windowHeight/2);
}
}
glEnd();
GLint totalNum=0;
for(int i=0;i<12;i++)
{
totalNum+=dataValue[i];
} GLfloat angleData[12];
for(int i=0;i<12;i++)
{
angleData[i]=2*3.1415926f*(GLfloat)dataValue[i]/totalNum; }
for(int j=1;j<12;j++)
{
angleData[j]+=angleData[j-1];
} glColor3f(1,0,0);
glLineWidth(2); glBegin(GL_LINES);
{
for(int i=0;i<12;i++)
{
glVertex2f(windowWidth/2,windowHeight/2);
glVertex2f((windowWidth/3)*cos(angleData[i])+windowWidth/2,(windowHeight/3)*sin(angleData[i])+windowHeight/2);
}
glEnd();
glFlush();
}
} int main(int argc, char *argv[])
{
glutInit(&argc, argv); //初始化GLUT
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(500, 200);
glutInitWindowSize(windowWidth, windowHeight);
glutCreateWindow("OpenGL");
Init();
glutDisplayFunc(&CircleImage); //回调函数
glutMainLoop();
return 0;
}

饼图:

OpenGL(十七) 绘制折线图、柱状图、饼图的更多相关文章

  1. OpenGL——折线图柱状图饼图绘制

    折线图绘制代码: #include<iostream> //旧版本 固定管线 #include<Windows.h> #include <GL/glut.h> // ...

  2. 百度推出的echarts,制表折线图柱状图饼图等的超级工具(转)

    一.简介: 1.绘制数据图表,有了它,想要网页上绘制个折线图.柱状图,从此easy. 2.使用这个百度的echarts.js插件,是通过把图片绘制在canvas上在显示在页面上. 官网对echarts ...

  3. G2 基本使用 折线图 柱状图 饼图 基本配置

    G2的基本使用 1.浏览器引入  <!-- 引入在线资源 --> <script src="https://gw.alipayobjects.com/os/lib/antv ...

  4. 【转】使用DevExpress的WebChartControl控件绘制图表(柱状图、折线图、饼图)

    第一次写博,没什么经验,主要是把最近自己对Dev的一些研究贴出来大家共同探讨,有不足之处望大家帮忙斧正. WebChartControl是DevExpress控件群下的一个Web图表控件,它使用非常的 ...

  5. JavaScript数据可视化编程学习(一)Flotr2,包含简单的,柱状图,折线图,饼图,散点图

    一.基础柱状图 二.基础的折线图 三.基础的饼图 四.基础的散点图 一.基础柱状图 如果你还没有想好你的数据用什么类型的图表来展示你的数据,你应该首先考虑是否可以做成柱状图.柱状图可以表示数据的变化过 ...

  6. 安卓图表引擎AChartEngine(三) - 示例源码折线图、饼图和柱状图

    折线图: package org.achartengine.chartdemo.demo.chart; import java.util.ArrayList; import java.util.Lis ...

  7. HighCharts之2D柱状图、折线图和饼图的组合图

    HighCharts之2D柱状图.折线图和饼图的组合图 1.实例源码 ColumnLinePie.html: <!DOCTYPE html> <html> <head&g ...

  8. 利用pandas读取Excel表格,用matplotlib.pyplot绘制直方图、折线图、饼图

    利用pandas读取Excel表格,用matplotlib.pyplot绘制直方图.折线图.饼图 数据: 折线图代码: import  pandas  as pdimport  matplotlib. ...

  9. 数据可视化(Echart) :柱状图、折线图、饼图等六种基本图表的特点及适用场合

    数据可视化(Echart) 柱状图.折线图.饼图等六种基本图表的特点及适用场合 参考网址 效果图 源码 <!DOCTYPE html> <html> <head> ...

随机推荐

  1. 【微信小程序】自定义模态框实例

    原文链接:https://mp.weixin.qq.com/s/23wPVFUGY-lsTiQBtUdhXA 1 概述 由于官方API提供的显示模态弹窗,只能简单地显示文字内容,不能对对话框内容进行自 ...

  2. [Angular2 Form] Validation message for Reactive form

    <div class="form-field"> <label>Confirm Password: </label> <input typ ...

  3. java生成UUID通用唯一识别码 (Universally Unique Identifier) 分类: B1_JAVA 2014-08-22 16:09 331人阅读 评论(0) 收藏

    转自:http://blog.csdn.net/carefree31441/article/details/3998553 UUID含义是通用唯一识别码 (Universally Unique Ide ...

  4. LinearLayout的一些注意事项 分类: H1_ANDROID 2013-10-26 23:01 856人阅读 评论(0) 收藏

    1.orientation的默认值为horizontal,即从左向右排列.由于一般从上向下排列,所以必须指定orientation属性. 2.layout_gravity与gravity的区别: (1 ...

  5. CompletionService 和ExecutorService的区别和用法

    JavaSE5的Java.util.concurrent包中的执行器(Executor)将为你管理Thread对象,从而简化了并发编程.Executor在客户端和执行任务之间提供了一个间接层,Exec ...

  6. JFinal redis cluster集群插件

    JFinal redis cluster集群插件 JFinal 框架到了2.1版本号,可是依旧仅仅支持redis的主从集群,没有看到Cluster集群的插件.笔者照着主从的插件方式,改了改,实现了个简 ...

  7. Git 常用命令总结(精问)

    Git 常用命令总结(精问) 一.总结 一句话总结:下次尝试做任何git的操作之前,把这个精看精问一遍,绝对会有意向不到的收获. 二.Git 常用命令总结 1.git常用命令 安装及配置: Ubunt ...

  8. WPF实现控件拖动

    原文:WPF实现控件拖动 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/lordwish/article/details/51823637 实现控件 ...

  9. Oracle数据库零散知识06 -- Package的定义与简单触发器

    CREATE OR REPLACE PACKAGE pak_02 IS--包头 --这里可定义公共参数 FUNCTION fun_01 RETURN NUMBER; PROCEDURE pro_01 ...

  10. UIApplicationsharedApplication的详解

    iPhone应用程序是由主函数main启动,它负责调用UIApplicationMain函数,该函数的形式如下所示: int UIApplicationMain ( int argc, char *a ...