使用 Eclipse BIRT 给科学数据绘图

红薯 发布于 2009/10/11 08:02
阅读 2K+
收藏 0
BIRT 是为商业报告设计的,但您同样可以使用它创建科学数据图。通过创建以下两个图,我们将学习如何将 BIRT 用于科学研究:变星的亮度图;每年的太阳黑子数量图。

顾名思义,Eclipse Business Intelligence and Reporting Tool (BIRT) 是用于创建商业报告的工具。但您同样可以使用它为科学数据绘图。实践表明,BIRT 很适合通过不同的数据源(例如,SQL 或纯文本文件)创建快速、专家级别的二维时间序列数据图。本文将介绍如何:

  • 从 Internet 查找数据源。
  • 使用纯文本文件的数据创建可变星亮度的时间序列图。
  • 从数据库检索数据,创建每年的太阳黑子数量图。

最近是阿波罗登月的周年纪念,最新版的 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:

  1. Eclipse 菜单中,单击 File > New > Other
  2. 在出现的窗口中,单击 Business Intelligence and Reporting Tools > Report Project
  3. 输入项目名称,然后单击 OK。例如,使用 birtPlotting
  4. 将出现一个窗口,询问是否切换到 Report Design Perspective;单击 Yes
  5. 右键单击 Navigator 选项卡的 birtPlotting 文件夹,然后单击 New > Report
  6. 输入 starmag.rptdesign 作为新报告的名称,然后单击 Next
  7. 在出现的窗口中,选择 Blank Report,然后单击 Finish

使用纯文本数据源绘制星的亮度

第 一个图是变星的亮度的变化图。根据 Wikipedia,“如果一颗星的亮度从地球看是随时变化的,那么这种星称为变星”。绘制的图将是一个简单的二维图,显示变星的亮度随时间的变化 — 具体来说,是 600 个夜晚的观测图。(数据文件 starmagnitudetimeseries.ssv 可从 下载 处获取)。

创建条形图

在左边,单击 Report Items 选项卡。从这里将图表拖动到设计器。尽管您可能想使用线形图,但条形图更加合适。随着数据点数量的增加,条的大小将变小以适应空间。单击 Next

添加数据源

数据的格式是以空格分隔的值(SSV)。要添加数据源:

  1. 选择 Use Data From,然后从下拉列表中选择 <New Data Set>
  2. 提示添加新数据源时,单击 Yes
  3. 在出现的窗口中,选择 Flat File Data Source。给定数据源名称并单击 Next。举例来说,可以使用名称 starMagDataSource
  4. 在下一个窗口中,选择 flatfile style 作为 ssv。其他选项包括以逗号分隔的值(comma-separated value ,CSV),以管道分隔的值(pipe-separated value,PSV)和以制表符分隔的值(tab-separated value,TSV)。
  5. 取消 User first line as column name indicator 复选框。
  6. 可以选择单击 Test connection 确保 BIRT 可以找到 SSV 文件。
  7. 单击 Finish 继续。

将出现一个窗口,提示数据源选择:您之前创建的数据源应该出现在 Flat file data source 下。给数据集命名,比如 starMagDataSet 并单击 Next。在以下页面,有两个列表:左边显示数据集的可变列,右边显示选择好在图标中使用的列。左边应该只有一列。选择并单击右箭头。将列名更改为 magnitude,选择整数类型,然后单击 Finish。最后,单击 OK

创建类别整数

现在应该回到条形图向导。执行以下步骤创建类别整数:

  1. Select Data 区域,选择自定义的 starMagDataSet。在预览区域,应该选择列名 magnitude 以及几个整数值。
  2. Category(X) Series 旁边,单击带有调用表达式构建器函数符号的按钮。
  3. Invoke expression builder 窗口中,选择 Available Column Bindings,然后选择子类别 Chart
  4. 双击 rowNum
  5. 在编辑器中,应该看到 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:

  1. 右键单击 birtPlotting 项目,然后单击 New > Report
  2. 将新报告的名称更改为 sunspots.rptdesign,然后单击 Finish。除了之前提到的添加数据源和数据集合的方法外,您还可以使用菜单添加。
  3. 在菜单栏中,单击 Data > New Data Source
  4. 在出现的窗口中,选择 jdbc data source,给数据源一个名称,然后单击 Next
  5. 单击 Manage Drivers 然后单击 Add 添加 H2 jdbc。
  6. 在文件选择器中,导航到 H2 安装。选择 h2 JAR 文件,然后单击 OK。H2 jdbc 现在应该出现在 Driver class 选项框中。
  7. 选择 H2 jdbc 驱动器,然后输入驱动器 URL jdbc:h2:/path/to/sunspot.db
  8. User Name 字段输入 sa
  9. 单击 Test Connection 确保 Eclipse 可以找到太阳黑子数据库,然后单击 Finish。如上,现在有了数据源,您还需要一个数据集。
  10. 在菜单栏中,单击 Data > New Data Set > New Data Set
  11. Data set 窗口中,选择刚刚创建的太阳黑子数据源,将数据集设置为 sql select query,键入名称,然后单击 Next
  12. 在查询文本区域中键入以下查询,然后单击 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 可以看到所有数据。

结束语

在本文中,您将看到如何使用商业智能工具为科学数据创建报告。您不需要购买昂贵的平台就可以获得高质量的快速可视化。本文的重点是演示如何通过另一种方式使用该商业工具。您还可以轻松地将其用于其他类型的数据。

下载本文的示例代码

加载中
0
iris_1992
iris_1992
FineReport与BIRT的对比文档:BIRT报表功能说明
返回顶部
顶部