我正在使用gwt-visualization(Chart Tools的包装器)。我有一个包含两个条形图(堆叠)和折线图的ComboChart,我想在某些行中添加annotation
和annotationText
。
DataTable
的定义如下:
private DataTable buildData() {
DataTable data = DataTable.create();
data.addColumn(ColumnType.STRING, "Day");
data.addColumn(ColumnType.NUMBER, "Domain");
data.addColumn(ColumnType.NUMBER, "Domain (Source 1)");
data.addColumn(ColumnType.NUMBER, "Domain (Source 2)");
addAnnotationColumn(data);
return data;
}
private native void addAnnotationColumn(DataTable data) /*-{
data.addColumn({
type : 'string',
role : 'annotation'
});
data.addColumn({
type : 'string',
role : 'annotationText'
});
}-*/;
然后是图表选项...
private ComboChart.Options createComboOptions(String title) {
ComboChart.Options options = ComboChart.createComboOptions();
Series line = Series.create();
line.setType(Type.LINE);
options.setSeries(0, line);
Series bars1 = Series.create();
bars1.setType(Type.BARS);
options.setSeries(1, bars1);
Series bars2 = Series.create();
bars2.setType(Type.BARS);
options.setSeries(2, bars2);
options.setIsStacked(true);
return options;
}
结果是这样的:
我需要的是为系列中的某些行添加注释,或者换句话说如何在ComboChart中设置角色,但我似乎无法理解找到有关如何在gwt中执行此操作的任何文档(甚至在ComboChart中如何在纯JS中执行此操作)。帮助
答案 0 :(得分:1)
可以找到有关Google图表中角色的文档here。
要添加实际注释,您只需使用内置的GWT函数(setValue()
)
这样的事情:
private DataTable buildData() {
DataTable data = DataTable.create();
data.addColumn(ColumnType.STRING, "Day");
data.addColumn(ColumnType.NUMBER, "Domain");
data.addColumn(ColumnType.NUMBER, "Domain (Source 1)");
data.addColumn(ColumnType.NUMBER, "Domain (Source 2)");
addAnnotationColumn(data);
for (int i =0;i<dataLength;i++) {
data.addRow();
data.setValue(i,0,'DAY');
data.setValue(i,1,DOMAIN);
data.setValue(i,2,DOMAIN_SOURCE1);
data.setValue(i,3,DOMAIN_SOURCE2);
data.setValue(i,4,ANNOTATION);
data.setValue(i,5,ANNOTATION_TEXT);
}
return data;
}
答案 1 :(得分:1)
原来,ComboChart将注释/注释文本列添加到图上创建的最后一个系列中 - 意味着角色被添加到条形图中,这不支持ComboChart中的注释。
然而,线图支持它们 - 所以'脏修复'是让线系列成为图中的最后一个:
private ComboChart.Options createComboOptions(String title) {
ComboChart.Options options = ComboChart.createComboOptions();
Series bars1 = Series.create();
bars1.setType(Type.BARS);
options.setSeries(0, bars1);
Series bars2 = Series.create();
bars2.setType(Type.BARS);
options.setSeries(1, bars2);
Series line = Series.create();
line.setType(Type.LINE);
options.setSeries(2, line);
options.setIsStacked(true);
return options;
}