Gwt Highcharts 简明教程
GWT Highcharts - Overview
GWT Highcharts 是一个基于 Java 的开源库,它在一个 GWT 应用程序中提供了优雅且功能丰富的 Highcharts 可视化,并且可以与 GWT 小部件库一起使用。
Features
-
Compatible - 支持所有现代浏览器以及 iPhone/iPad 浏览器和 Internet Explorer 6 及更高版本。现代浏览器使用 SVG 进行图形渲染,而旧版 Internet Explorer 中的图形则使用 VML 绘制。
-
Pure Java - 不需要 JavaScript,因为 Java 方法中提供了完整的 Highcharts API。
-
No Flash - 无需客户端插件,例如 Flash 播放器或 Java,因为 Highcharts 采用原生浏览器技术,并且图表可以在现代移动设备上运行而无需修改。
-
Clean Syntax - 大多数方法都是可连接的,因此可以通过紧凑到像 JSON 一样的语法管理图表配置选项。
-
Dynamic - 可以在图表创建后的任何时间动态添加系列和点。支持事件挂钩。支持服务器交互。
-
Documented - Highcharts API 通过大量代码和语法示例进行了全面记录。
GWT Highcharts - Environment Setup
本教程指导你如何准备开发环境以便开始使用 Highcharts 和 GWT 框架。本教程还将教你如何在设置 GWT 框架之前在机器上设置 JDK、Tomcat 和 Eclipse -
System Requirement
GWT 需要 JDK 1.6 或更高版本,因此第一个要求是在你的机器中安装 JDK。
JDK |
1.6 or above. |
Memory |
no minimum requirement. |
Disk Space |
no minimum requirement. |
Operating System |
no minimum requirement. |
按照给定的步骤设置你的环境,从 GWT 应用程序开发开始。
Step 1 - Verify Java Installation on your Machine
现在打开控制台并执行以下 Java 命令。
OS |
Task |
Command |
Windows |
Open Command Console |
c:> java -version |
Linux |
Open Command Terminal |
$ java -version |
Mac |
Open Terminal |
machine:~ joseph$ java -version |
让我们验证所有操作系统的输出
Sr.No. |
OS & Generated Output |
1 |
Windows java 版本“1.6.0_21”Java™ SE 运行时环境(版本 1.6.0_21-b07)Java HotSpot™ Client VM(版本 17.0-b17,混合模式,共享) |
2 |
Linux java 版本“1.6.0_21”Java™ SE 运行时环境(版本 1.6.0_21-b07)ava HotSpot™ Client VM(版本 17.0-b17,混合模式,共享) |
3 |
Mac java 版本“1.6.0_21”Java™ SE 运行时环境(版本 1.6.0_21-b07)Java HotSpot™64 位服务器 VM(版本 17.0-b17,混合模式,共享) |
Step 2 - Setup Java Development Kit (JDK)
如果你没有安装 Java,那么你可以从 Oracle 的 Java 网站安装 Java 软件开发工具包 (SDK): Java SE Downloads 。你将找到下载文件中的安装 JDK 的说明,按照给定的说明进行安装和配置。最后设置 PATH 和 JAVA_HOME 环境变量,分别指向包含 java 和 javac 的目录,通常是 java_install_dir/bin 和 java_install_dir。
设置 JAVA_HOME 环境变量以指向安装 Java 的机器中的基本目录位置。例如
Sr.No. |
OS & Output |
1 |
Windows 将环境变量 JAVA_HOME 设置为 C:\Program Files\Java\jdk1.6.0_21 |
2 |
Linux export JAVA_HOME = /usr/local/java-current |
3 |
Mac export JAVA_HOME = /Library/Java/Home |
将 Java 编译器位置追加到系统路径中。
Sr.No. |
OS & Output |
1 |
Windows 把字符串 ;%JAVA_HOME%\bin 添加到系统变量 Path 的末尾。 |
2 |
Linux export PATH=$PATH:$JAVA_HOME/bin/ |
3 |
Mac not required |
或者,如果您使用 Borland JBuilder、Eclipse、IntelliJ IDEA 或 Sun ONE Studio 等集成开发环境 (IDE),请编译并运行一个简单程序以确认该 IDE 知道您安装 Java 的位置,否则请按照给定的 IDE 文档执行正确设置。
Step 3 - Setup Eclipse IDE
本教程中的所有示例均使用 Eclipse IDE 编写。因此,我建议您应该根据您的操作系统在您的机器上安装最新版本的 Eclipse。
要安装 Eclipse IDE,请从 https://www.eclipse.org/downloads/ 下载最新的 Eclipse 二进制文件。下载安装后,将二进制发行版解压缩到一个方便的位置。例如,在 Windows 上为 C:\eclipse,在 Linux/Unix 上为 /usr/local/eclipse,最后适当设置 PATH 变量。
可以在 Windows 机器上执行以下命令启动 Eclipse,或者您只需双击 eclipse.exe
%C:\eclipse\eclipse.exe
可以通过在 Unix(Solaris、Linux 等)机器上执行以下命令启动 Eclipse −
$/usr/local/eclipse/eclipse
启动成功后,如果一切正常,应该显示以下结果 -
Step 4: Install GWT SDK & Plugin for Eclipse
按照 Plugin for Eclipse (incl. SDKs) 链接处给出的说明安装适用于您机器上已安装的 Eclipse 版本的 GWT SDK 和插件。
成功设置 GWT 插件后,如果一切正常,应该显示以下屏幕,其中以红色矩形标记的 Google icon ,如下所示 -
Step 5: Install Highcharts
从其 Download 页面下载最新的 Highcharts jar,并将其添加到项目的类路径中。
在 <project-name>.gwt.xml 文件中添加以下条目
<inherits name="org.moxieapps.gwt.highcharts.Highcharts"/>
在 <project-name>.html 文件中添加以下条目
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"/>
<script src = "https://code.highcharts.com/highcharts.js"/>
<script type="text/javascript" src="https://code.highcharts.com/highcharts-3d.js" />
<script type="text/javascript" src="https://code.highcharts.com/highcharts-more.js" />
<script src = "https://code.highcharts.com/modules/heatmap.js" />
<script src = "https://code.highcharts.com/modules/treemap.js" />
GWT Highcharts - Configuration Syntax
在本章中,我们将展示使用 GWT 中的 Highcharts API 绘制图表所需的配置。
Step 1: Create GWT Application
按照以下步骤更新我们在 GWT - 创建应用程序章节中创建的 GWT 应用程序 -
Step |
Description |
1 |
在包 com.tutorialspoint 下使用名称 HelloWorld 创建一个项目,如 GWT - 创建应用程序章节中所述。 |
2 |
修改 HelloWorld.gwt.xml、HelloWorld.html 和 HelloWorld.java,如下所示。保持其他文件不变。 |
3 |
编译并运行应用程序以验证已实现逻辑的结果。 |
以下是修改后的模块描述符 src/com.tutorialspoint/HelloWorld.gwt.xml 的内容。
<?xml version = "1.0" encoding = "UTF-8"?>
<module rename-to = 'helloworld'>
<inherits name = 'com.google.gwt.user.User'/>
<inherits name = 'com.google.gwt.user.theme.clean.Clean'/>
<entry-point class = 'com.tutorialspoint.client.HelloWorld'/>
<inherits name="org.moxieapps.gwt.highcharts.Highcharts"/>
<source path = 'client'/>
<source path = 'shared'/>
</module>
以下是修改后的 HTML 主机文件 war/HelloWorld.html 的内容。
<html>
<head>
<title>GWT Highcharts Showcase</title>
<link rel = "stylesheet" href = "HelloWorld.css"/>
<script language = "javascript" src = "helloworld/helloworld.nocache.js">
<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js" />
<script src = "https://code.highcharts.com/highcharts.js" />
</script>
</head>
<body>
</body>
</html>
理解了配置后,我们将在最后看到更新的 HelloWorld.java。
Step 2: Create Configurations
Create Chart
配置图表的类型、标题和副标题。
Chart chart = new Chart()
.setType(Type.SPLINE)
.setChartTitleText("Monthly Average Temperature")
.setChartSubtitleText("Source: WorldClimate.com");
xAxis
配置要显示在 X 轴上的刻度标记。
XAxis xAxis = chart.getXAxis();
xAxis.setCategories("Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
yAxis
配置标题和要显示在 Y 轴上的绘制线。
YAxis yAxis = chart.getYAxis();
yAxis.setAxisTitleText("Temperature °C");
yAxis.createPlotLine()
.setValue(0)
.setWidth(1)
.setColor("#808080");
tooltip
配置工具提示。在值后面添加要附加的后缀(y 轴)。
ToolTip toolTip = new ToolTip();
toolTip.setValueSuffix("°C");
chart.setToolTip(toolTip);
legend
配置要显示在图表右侧以及其他属性的图例。
legend.setLayout(Legend.Layout.VERTICAL)
.setAlign(Legend.Align.RIGHT)
.setVerticalAlign(Legend.VerticalAlign.TOP)
.setX(-10)
.setY(100)
.setBorderWidth(0);
chart.setLegend(legend);
series
配置要显示在图表上的数据。系列是数组,其中该数组中的每个元素表示图表上的一条线。
chart.addSeries(chart.createSeries()
.setName("Tokyo")
.setPoints(new Number[] {
7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2,
26.5, 23.3, 18.3, 13.9, 9.6
})
);
chart.addSeries(chart.createSeries()
.setName("New York")
.setPoints(new Number[] {
-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8,
24.1, 20.1, 14.1, 8.6, 2.5
})
);
chart.addSeries(chart.createSeries()
.setName("Berlin")
.setPoints(new Number[] {
-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6,
17.9, 14.3, 9.0, 3.9, 1.0
})
);
chart.addSeries(chart.createSeries()
.setName("London")
.setPoints(new Number[] {
3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0,
16.6, 14.2, 10.3, 6.6, 4.8
})
);
Step 3: Add the chart to parent panel.
我们将图表添加到根面板。
RootPanel.get().add(chart);
Example
考虑以下示例,以进一步了解配置语法 -
HelloWorld.java
package com.tutorialspoint.client;
import org.moxieapps.gwt.highcharts.client.Chart;
import org.moxieapps.gwt.highcharts.client.Legend;
import org.moxieapps.gwt.highcharts.client.Series.Type;
import org.moxieapps.gwt.highcharts.client.ToolTip;
import org.moxieapps.gwt.highcharts.client.XAxis;
import org.moxieapps.gwt.highcharts.client.YAxis;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;
public class HelloWorld implements EntryPoint {
public void onModuleLoad() {
Chart chart = new Chart()
.setType(Type.SPLINE)
.setChartTitleText("Monthly Average Temperature")
.setChartSubtitleText("Source: WorldClimate.com");
XAxis xAxis = chart.getXAxis();
xAxis.setCategories("Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
YAxis yAxis = chart.getYAxis();
yAxis.setAxisTitleText("Temperature °C");
yAxis.createPlotLine()
.setValue(0)
.setWidth(1)
.setColor("#808080");
ToolTip toolTip = new ToolTip();
toolTip.setValueSuffix("°C");
chart.setToolTip(toolTip);
Legend legend = new Legend();
legend.setLayout(Legend.Layout.VERTICAL)
.setAlign(Legend.Align.RIGHT)
.setVerticalAlign(Legend.VerticalAlign.TOP)
.setX(-10)
.setY(100)
.setBorderWidth(0);
chart.setLegend(legend);
chart.addSeries(chart.createSeries()
.setName("Tokyo")
.setPoints(new Number[] {
7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2,
26.5, 23.3, 18.3, 13.9, 9.6
})
);
chart.addSeries(chart.createSeries()
.setName("New York")
.setPoints(new Number[] {
-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8,
24.1, 20.1, 14.1, 8.6, 2.5
})
);
chart.addSeries(chart.createSeries()
.setName("Berlin")
.setPoints(new Number[] {
-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6,
17.9, 14.3, 9.0, 3.9, 1.0
})
);
chart.addSeries(chart.createSeries()
.setName("London")
.setPoints(new Number[] {
3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0,
16.6, 14.2, 10.3, 6.6, 4.8
})
);
RootPanel.get().add(chart);
}
}
GWT Highcharts - Line Charts
折线图用于绘制基于折线/样条线的图表。在本节中,我们将讨论不同类型的折线图和样条线图。
Sr.No. |
Chart Type & Description |
1 |
Basic lineBasic line chart. |
2 |
With data labels 带数据标签的图表。 |
3 |
Time series, zoomable 带时间序列的图表。 |
4 |
Spline with inverted axes 具有反转坐标轴的样条线图。 |
5 |
Spline with symbols 使用符号表示热量/雨量的样条线图。 |
6 |
Spline with plot bands 带网格线的样条线图。 |
GWT Highcharts - Area Charts
面积图用于绘制基于面积的图表。在本节中,我们将讨论不同类型的基于面积的图表。
Sr.No. |
Chart Type & Description |
1 |
Basic AreaBasic area chart. |
2 |
Area with negative values 具有负值的面积图。 |
3 |
Stacked area 具有彼此叠加的区域的图表。 |
4 |
Percentage area 使用百分比项数据的图表。 |
5 |
Area with missing points 数据中带丢失点的图表。 |
6 |
Inverted axes 使用反转坐标轴的面积图。 |
7 |
Area-splineArea chart using spline. |
GWT Highcharts - Bar Charts
条形图用于绘制基于条形的图表。在本部分中,我们将讨论不同类型的基于条形的图表。
Sr.No. |
Chart Type & Description |
1 |
Basic BarBasic bar chart. |
2 |
Stacked Bar 条形堆叠在一起的条形图。 |
3 |
Bar Chart with negative values 带有负值的条形图。 |
GWT Highcharts - Column Charts
柱状图用于绘制基于柱状的图表。在本节中,我们将讨论不同类型的基于柱状的图表。
Sr.No. |
Chart Type & Description |
1 |
Basic ColumnBasic column chart. |
2 |
Column with negative values 带负值的柱状图。 |
3 |
Stacked column 柱状相互叠加的图表。 |
4 |
Stacked and Grouped column 柱状以堆叠和分组形式显示的图表。 |
5 |
Column with stacked percentage 带堆叠百分比的图表。 |
6 |
Column with rotated labels 柱状中标签旋转的柱状图。 |
7 |
Column Range 使用范围的柱状图。 |
GWT Highcharts - Pie Charts
饼图用于绘制基于饼状的图表。在本节中,我们将讨论不同类型的基于饼状的图表。
Sr.No. |
Chart Type & Description |
1 |
Basic PieBasic pie chart. |
2 |
Pie with Legends 带图例的饼状图。 |
3 |
Donut ChartDonut Chart. |
GWT Highcharts - Scatter Chart
以下是散点图的基本示例。
我们已经看到了在 Highcharts Configuration Syntax 章节中用于绘制图表的配置。
下面给出散点图的基本示例。
series
将图表类型配置为基于散点。 series.type 决定图表系列类型。此处,默认值为“折线”。
chart.addSeries(chart.createSeries()
.setName("Observations")
.setType(Type.SCATTER)
.setPoints(new Number[] {
1, 1.5, 2.8, 3.5, 3.9, 4.2
})
);
Example
HelloWorld.java
package com.tutorialspoint.client;
import org.moxieapps.gwt.highcharts.client.Chart;
import org.moxieapps.gwt.highcharts.client.Series.Type;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;
public class HelloWorld implements EntryPoint {
public void onModuleLoad() {
final Chart chart = new Chart()
.setChartTitleText("Scatter plot");
chart.getXAxis()
.setMin(-0.5)
.setMax(5.5);
chart.getYAxis()
.setMin(0);
chart.addSeries(chart.createSeries()
.setName("Observations")
.setType(Type.SCATTER)
.setPoints(new Number[] {
1, 1.5, 2.8, 3.5, 3.9, 4.2
})
);
RootPanel.get().add(chart);
}
}
GWT Highcharts - Dynamic Charts
动态图表用于绘制基于数据的图表,其中数据可以在图表呈现后更改。在本节中,我们将讨论不同类型的动态图表。
Sr.No. |
Chart Type & Description |
1 |
Spline updating each second 每秒更新的样条曲线图。 |
2 |
Click to add a point 具有点增加功能的图表。 |
GWT Highcharts - Combination Charts
组合图用于绘制混合图;例如,包含饼图的条形图。在本部分中,我们将讨论不同类型的组合图。
Sr.No. |
Chart Type & Description |
1 |
Column, Line and Pie 具有柱形图、折线图和饼图的图表。 |
2 |
Dual Axes, Line and Column 具有双轴、折线图和柱形图的图表。 |
3 |
Multiple Axes 具有多轴的图表。 |
4 |
Scatter with regression line 带有回归线的散点图。 |
GWT Highcharts - 3D Charts
3D 图用于绘制 3 维图表。在本部分中,我们将讨论不同类型的 3D 图。
Sr.No. |
Chart Type & Description |
1 |
3D Column3D Column Chart. |
2 |
3D Scatter3D Scatter Chart. |
3 |
3D Pie3D Pie Chart. |