作为一个理工男。用过了形形色色能够用于科学作图/数据可视化软件:从大学时做实验课推荐用于分析简单採集数据的 Origin; 毕业论文时用来呈现实验时序信号和离线分析脑电信号的 MATLAB。后面还发现了 Octave 以及 Gnuplot ; 以及实验室师兄推荐用的 Matplotlib 软件; 工作后随着 HTML5 大红大紫,也发现了一些基于 Web 前端的软件,比方 d3js/Highcharts, 还有 Python 的 Bokeh…… 这些软件都有各自的优缺点,因为自己平时工作会做一些算法研究、数据展示,而且也认为有我这样需求的人还有些。所以着手做启动了
WaaCaa 项目,主要基于这些需求

  1. 基本作图与信息图:基本作图的支持不用说了:基于直角坐标系的散点图、折线图、柱状图,以及极坐标系的饼图、雷达图。另外还须要比較高级的信息图。用户只须要准备好输入数据,然后指定类型的图就呈现出来了。
  2. 良好的多语言接口支持:眼下较为流行的,比方 MATLAB/Matplotlib/Highcharts, 可是他们都是语言绑定的,这样导致使用不同的工具,绘制/数据交互的风格/效果不一致;
  3. 良好的视觉效果交互体验:良好的视觉效果和交互体验绝对不不过使用者"赏心悦目"的须要,更是在做数据/算法研究时候便于理解数据的基本要求。举个样例。在一张图的数据被 clear 或者加入新数据后,假设有缓动(easing)/补间动画(animation)的时候,视口(view port)的缓慢变化会不会让用户更便于理解当中数据范围(range)的变化呢?——至少我是这么认为的。没有animation的图上数据的范围(range)发生图片让人非常不舒服;还有鼠标交互(包含拖拽平移、zoom
    in/out、滚轮支持);
  4. 快速绘制能力:因为我有做一些音频/音乐方面的算法研究。而新兴的基于 HTML5 的工具远远不能满足我做这方面研究的需求——在音频算法研究过程中。往往须要把时间划分到毫秒级别时间窗。假设要跟播放速度一致。那么往往就须要 10~100 Hz 的绘制频率了;
  5. 跨平台支持:尽管 Windows 用户非常多,可是做科研的人也有不少 Mac OS X 用户(以及更少数的 Linux 桌面用户)。这款工具须要跨操作系统平台的支持。而且保持不同系统上的体验一致。
  6. 图片导出功能:把绘制好的图片导出成经常使用的交互格式,包含有压缩和没压缩的位图(bmp, png, jpg)以及矢量图(如 eps)。
基于这些需求,我是这么做技术选型的:
  • 本作图软件作为一个 Server,提供 TCP Socket API,方便实现多语言接口支持;
  • 包含窗体的用户交互和图形绘制、以及中间的逻辑用 C++ 编写,便于跨平台和快速绘制(选用C++11标准,为了更少的语言坑);
  • 绘制方面,Windows 选用 Direct3D/Direct2D 方案,Mac OS X 以及 Linux X Window 选用 OpenGL 绘制;

从技术选型到如今,用零碎时间coding了两三个月了。眼下 WaaCaa 还在完好中(仅完毕了 Windows 版本号,绘制基本图类型,仅仅做了 C++ 用户接口)。project已经公布到 github 。眼下的效果图 https://github.com/ImplFancy/WaaCaa/blob/master/README.md

欢迎有志者联系我,一起完好它。兴许会在本博客书写 WaaCaa 相关的技术文章。

【WaaCaa】一款开源科学作图/数据可视化工具 —— 诞生篇的更多相关文章

  1. 4款开源免费的数据可视化JavaScript库

    概述:交互式数据可视化在很大程度上取决于JavaScript库的任务能力.在这篇文章中,我们将看看四个JavaScript库:D3,InfoVis,Processing.js,和Recline.js. ...

  2. 自动驾驶汽车数据不再封闭,Uber 开源新的数据可视化系统

    日前,Uber 开源了基于 web 的自动驾驶可视化系统(AVS),称该系统为自动驾驶行业带来理解和共享数据的新方式.AVS 由Uber旗下负责自动驾驶汽车研发的技术事业群(ATG)开发,目前该系统已 ...

  3. BI数据可视化工具怎么选?用这款就够了!

    任何一项产品的选择都需要谨慎而全面,BI数据可视化工具的选择就更不用说了.作为企业的IT部门,如果没有良好的BI工具支持,IT部门将会十分容易陷入困境.那么面对多元化的BI工具市场,IT部门该如何选择 ...

  4. ROS数据可视化工具Rviz和三维物理引擎机器人仿真工具V-rep Morse Gazebo Webots USARSimRos等概述

    ROS数据可视化工具Rviz和三维物理引擎机器人仿真工具V-rep Morse Gazebo Webots USARSimRos等概述 Rviz Rviz是ROS数据可视化工具,可以将类似字符串文本等 ...

  5. 漫谈可视化Prefuse(五)---一款属于我自己的可视化工具

    伴随着前期的基础积累,翻过API,读过一些Demo,总觉得自己已经摸透了Prefuse,小打小闹似乎已经无法满足内心膨胀的自己.还记得儿时看的<武状元苏乞儿>中降龙十八掌最后一张居然是空白 ...

  6. Metasploit是一款开源的安全漏洞检测工具,

    Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,适合于需要核实漏洞的安全专家,同时也适合于强大进攻能力的 ...

  7. Linux 上的数据可视化工具

    Linux 上的数据可视化工具 5 种开放源码图形化工具简介 Linux® 上用来实现数据的图形可视化的应用程序有很多,从简单的 2-D 绘图到 3-D 制图,再到科学图形编程和图形模拟.幸运的是,这 ...

  8. Hitchhiker 是一款开源的 Restful Api 测试工具

    Hitchhiker 是一款开源的 Restful Api 测试工具 开源API测试工具 Hitchhiker v0.4更新 - 没有做不到,只有想不到 Hitchhiker 是一款开源的 Restf ...

  9. CentOS6安装各种大数据软件 第九章:Hue大数据可视化工具安装和配置

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

随机推荐

  1. python 读取二进制文件 转为16进制输出

    示例: #!/usr/bin/env python #encoding: utf-8 import binascii fh = open(r'C:\Temp\img\2012517165556.png ...

  2. DDos攻击,使用深度学习中 栈式自编码的算法

    转自:http://www.airghc.top/2016/11/10/Dection-DDos/ 最近研究了一篇论文,关于检测DDos攻击,使用了深度学习中 栈式自编码的算法,现在简要介绍一下内容论 ...

  3. hdoj--1533--Going Home(KM)

    Going Home Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  4. 利用道格拉斯·普客法(DP法)压缩矢量多边形(C++)

    1.算法描述 经典的Douglas-Peucker算法(简称DP法)描述如下: (1)在曲线首尾两点A,B之间连接一条直线AB,该直线为曲线的弦: (2)得到曲线上离该直线段距离最大的点C,计算其与A ...

  5. BZOJ 4742 DP

    思路: Claris大大说了 排序以后 这个可以看成是括号序列 f[i][j][k]表示到了i j个左括号 k个右括号 (f[i][j][k]+=f[i-1][j][k])%=p; if(node[i ...

  6. Spark Streaming概念学习系列之SparkStreaming性能调优

    SparkStreaming性能调优 合理的并行度 减少批处理所消耗时间的常见方式还有提高并行度.有以下三种方式可以提高并行度: 1.增加接收器数目 有时如果记录太多导致单台机器来不及读入并分发的话, ...

  7. JavaScript定时器的开启关闭

    <html> <head> <meta charset="utf-8"> <title>无标题文档</title> &l ...

  8. Javassist介绍

    要想将编译时不存在的类在运行时动态创建并加载,通常有两种策略: 1. 动态编译 2. 动态生成二进制字节码(.class) 对于第二种策略,实际上已经有诸多比较成熟的开源项目提供支持,如CGLib.A ...

  9. Android 自定义控件之圆形扩散View(DiffuseView)

    实现效果 使用 属性方法 代码 源码下载 参考链接 实现效果 使用 XML中: <com.airsaid.diffuseview.widget.DiffuseView android:id=&q ...

  10. linux+nginx+python+django环境配置

    Django是一个开放源代码的Web应用框架,由Python写成,它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的.python+django也是web开发者最受欢迎的框架.今天 ...