ComboChart与gwt google-visualization中的注释文本

时间:2012-11-12 00:33:49

标签: java gwt google-visualization gwt-visualization

我正在使用gwt-visualizationChart Tools的包装器)。我有一个包含两个条形图(堆叠)和折线图的ComboChart,我想在某些行中添加annotationannotationText

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;
}

结果是这样的: result

我需要的是为系列中的某些行添加注释,或者换句话说如何在ComboChart中设置角色,但我似乎无法理解找到有关如何在gwt中执行此操作的任何文档(甚至在ComboChart中如何在纯JS中执行此操作)。帮助

2 个答案:

答案 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;
}