级别: 中级 Cesar Otero, 顾问, 自由职业
2009 年 9 月 30 日 BIRT 是为商业报告设计的,但您同样可以使用它创建科学数据图。通过创建以下两个图,我们将学习如何将 BIRT 用于科学研究:变星的亮度图;每年的太阳黑子数量图。
顾名思义,Eclipse Business Intelligence and Reporting Tool (BIRT) 是用于创建商业报告的工具。但您同样可以使用它为科学数据绘图。实践表明,BIRT 很适合通过不同的数据源(例如,SQL 或纯文本文件)创建快速、专家级别的二维时间序列数据图。本文将介绍如何:
- 从 Internet 查找数据源。
- 使用纯文本文件的数据创建可变星亮度的时间序列图。
- 从数据库检索数据,创建每年的太阳黑子数量图。
 |
常用缩写
- 2-D:二维
- JAR: Java™ 归档文件
- POSIX:可移植操作系统接口
- SQL:结构化查询语言
- URL:统一资源定位符
|
|
最近是阿波罗登月的周年纪念,最新版的 Eclipse 又称为 Galileo,于是我无法抗拒绘制航天科学图的念头。
获取数据
您有许多数据源可以选择,具体取决于您想可视化的数据种类。例如,您可以使用 National Oceanic 和 Atmospheric Administration (NOAA)、National Astronomy、Ionosphere Center (NAIC)、European Incoherent Scatter Scientific Association (EISCAT) 或者 IAU Minor Planet Center。一般情况下,您找到的数据是二进制格式的,您需要使用第三方库来提取数据。本文主要介绍如何使用简单的纯文本文件中的数据绘图。
您可以使用 Time Series
Data Library 中的数据。该站点包含许多领域的数据集,而且都是文本格式。
设置
首先,如果没有下载 Eclipse 请先下载它(参见 参考资料)。如果使用最新版的 Eclipse — Galileo,您也需要新建工作空间以避免某些问题。文本的报告文件是使用最新版的 Eclipse 和 BIRT 创建和测试的,但使用以前的版本也应该可以创建相同的报告。BIRT 是一个 Eclipse 插件,具有以下依赖关系:
 |
获取数据注意事项
您获取的数据不一定要来自天文台或实验室;它也可以是政府发布的数据或历史天气数据。您获取的数据可能有使用条款,务必阅读许可证信息,不要违背这些条款。
|
|
- DTP — 数据工具平台
- EMF — Eclipse 建模框架
- GEF — 图形编辑框架
- WTP — Web 工具平台
幸运的是,有一个一体化的下载文件包含了 Eclipse、BIRT 的所有依赖关系以及 BIRT 本身(参见 参考资料)。获取并安装 BIRT 之后,启动 Eclipse:
- 在 Eclipse 菜单中,单击 File > New > Other。
- 在出现的窗口中,单击 Business Intelligence and Reporting
Tools > Report Project。
- 输入项目名称,然后单击 OK。例如,使用 birtPlotting。
- 将出现一个窗口,询问是否切换到 Report Design Perspective;单击 Yes。
- 右键单击 Navigator 选项卡的 birtPlotting 文件夹,然后单击 New
> Report。
- 输入
starmag.rptdesign 作为新报告的名称,然后单击 Next。
- 在出现的窗口中,选择 Blank Report,然后单击 Finish。
使用纯文本数据源绘制星的亮度
第一个图是变星的亮度的变化图。根据 Wikipedia,“如果一颗星的亮度从地球看是随时变化的,那么这种星称为变星”。绘制的图将是一个简单的二维图,显示变星的亮度随时间的变化 — 具体来说,是 600 个夜晚的观测图。(数据文件 starmagnitudetimeseries.ssv 可从 下载 处获取)。
创建条形图
在左边,单击 Report Items 选项卡。从这里将图表拖动到设计器。尽管您可能想使用线形图,但条形图更加合适。随着数据点数量的增加,条的大小将变小以适应空间。单击 Next。
添加数据源
数据的格式是以空格分隔的值(SSV)。要添加数据源:
- 选择 Use Data From,然后从下拉列表中选择 <New Data Set>。
- 提示添加新数据源时,单击 Yes。
- 在出现的窗口中,选择 Flat File Data Source。给定数据源名称并单击 Next。举例来说,可以使用名称 starMagDataSource。
- 在下一个窗口中,选择 flatfile style 作为 ssv。其他选项包括以逗号分隔的值(comma-separated value ,CSV),以管道分隔的值(pipe-separated value,PSV)和以制表符分隔的值(tab-separated value,TSV)。
- 取消 User first line as column name indicator 复选框。
- 可以选择单击 Test connection 确保 BIRT 可以找到 SSV 文件。
- 单击 Finish 继续。
将出现一个窗口,提示数据源选择:您之前创建的数据源应该出现在 Flat file data source 下。给数据集命名,比如 starMagDataSet 并单击 Next。在以下页面,有两个列表:左边显示数据集的可变列,右边显示选择好在图标中使用的列。左边应该只有一列。选择并单击右箭头。将列名更改为 magnitude,选择整数类型,然后单击 Finish。最后,单击 OK。
创建类别整数
现在应该回到条形图向导。执行以下步骤创建类别整数:
- 在 Select Data 区域,选择自定义的 starMagDataSet。在预览区域,应该选择列名 magnitude 以及几个整数值。
- 在 Category(X) Series 旁边,单击带有调用表达式构建器函数符号的按钮。
- 在 Invoke expression builder 窗口中,选择 Available Column Bindings,然后选择子类别 Chart。
- 双击 rowNum。
- 在编辑器中,应该看到 row.__rownum。单击 OK。
对类别 Y 序列重复该过程,但这时双击的是 magnitude 而不是 rowNum。
定制图表
可以让图标变得更加漂亮,单击 Format Chart 选项卡。从这里可以更改图表标题,移除右边的标签,更改 X 轴和 Y 轴的标题,更改颜色,甚至可以更改图形缩放比例。例如,默认缩放比例是线形的,但您可以将其更改为对数缩放比例。对于该图,使用标题 Variable Star Magnitude
Time Series。标记 X 轴 Period (nights) 和 Y 轴 Magnitude。完成这一点之后,单击 Finish。
在报告设计器中,展开图表对象以填满报告的宽度,让高度增加 3 英寸。要预览图,请单击 Preview 选项卡或者从菜单中单击 Page >
Preview。
您可能会注意到,并非所有 600 个夜晚都出现在图表中。在图的最上方,写有:“Note: Current maximum number
of data rows is...”,后跟 “Note: (Click to change Preview Preferences)” 之类的字样。单击该信息。在得到的窗口中,单击 No limits of the number
of rows to display,然后单击 OK。将提示刷新页面视图:单击 Yes。您应该在图上看到所有 600 个点。图 1 展示完整的图表。
图 1. 可变的亮度的时间序列
要保存图,单击 Run > View Report > As PDF 或其他您希望预览图表的格式。然后保存到磁盘。
使用数据库绘制太阳黑子的数量
在下一个图中,您将数据输入关系数据库,创建报告,并使用 Java 技术程序生成最终产品。该图表示选定时间跨度内的太阳黑子数量。
首先,下载 H2 数据库(参见 参考资料)。H2 实现为纯 Java 数据,大小较小。下载之后,解压文件并导航到 bin 目录。应该有一个名为 h2-version-number 的 JAR 文件(我的机器上是 h2-1.1.114.jar)。您可以输入 java -jar h2-1.1.114.jar 或者运行 .sh 或 .bat 文件(取决于运行的是 POSIX 还是
Windows® 机器)。
现在服务器已经运行,可以向其填充数据。需要的太阳黑子数据位于从 下载 处下载的文件中。在控制台中,单击 Tools > Run Script。在 Target database URL 文件中,输入 jdbc:h2:~/sunspots.db。因为数据库尚未存在,因此 H2 将为您创建一个。在 Source script file name 字段,输入到 sunspots.sql 文件的完整路径,然后单击 Run。
返回 Eclipse:
- 右键单击 birtPlotting 项目,然后单击 New > Report。
- 将新报告的名称更改为
sunspots.rptdesign,然后单击 Finish。除了之前提到的添加数据源和数据集合的方法外,您还可以使用菜单添加。
- 在菜单栏中,单击 Data > New Data Source。
- 在出现的窗口中,选择 jdbc data source,给数据源一个名称,然后单击 Next。
- 单击 Manage Drivers 然后单击 Add 添加 H2 jdbc。
- 在文件选择器中,导航到 H2 安装。选择 h2 JAR 文件,然后单击 OK。H2 jdbc 现在应该出现在 Driver class 选项框中。
- 选择 H2 jdbc 驱动器,然后输入驱动器 URL
jdbc:h2:/path/to/sunspot.db。
- 在 User Name 字段输入
sa。
- 单击 Test Connection 确保 Eclipse 可以找到太阳黑子数据库,然后单击 Finish。如上,现在有了数据源,您还需要一个数据集。
- 在菜单栏中,单击 Data > New Data Set > New Data Set。
- 在 Data set 窗口中,选择刚刚创建的太阳黑子数据源,将数据集设置为 sql select query,键入名称,然后单击 Next。
- 在查询文本区域中键入以下查询,然后单击 Finish:
select * from sunspots where year between 1900 and 1980;
|
现在,将新的图表对象拖动到布局区。您将再次使用条形图。单击图标窗口的 Next。选择 Use Data From 选项,然后选择 sunSpotsDataSet。单击类别 X 序列的表达式构建器按钮,然后选择 Available column bindings > Chart 并双击 YEAR。单击 OK。
接下来,调用类别 Y 序列的表达式构建器。选择 Available column
bindings > Chart,双击 NUM 然后单击 OK。更改您想要的格式,然后单击 Finish。预览图时,您将看到非常整洁的时间序列。要注意的第一件事情是,太阳黑子的数量遵循一个周期,如下所示。
图 2. 每年的太阳黑子数量图
使用数据库中的数据有一个明显的优势,能够通过查询操作数据。将查询更改为 select * from sunspots 可以看到所有数据。
结束语
在本文中,您将看到如何使用商业智能工具为科学数据创建报告。您不需要购买昂贵的平台就可以获得高质量的快速可视化。本文的重点是演示如何通过另一种方式使用该商业工具。您还可以轻松地将其用于其他类型的数据。
下载 | 描述 | 名字 | 大小 | 下载方法 |
|---|
| SSV 和 SQL 数据源 | os-eclipse-scala-Converter.zip | 2KB | HTTP |
|---|
参考资料 学习
获得产品和技术
讨论
关于作者  | |  | Cesar Otero 是一名 Java 和 Python 顾问。他具有电气工程学位并兼修了数学。 |
对本文的评价
|