1

我正在使用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 中)。帮助?

4

2 回答 2

1

关于谷歌图表中角色的文档可以在这里找到。

要添加实际的注释,您可以使用内置的 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;
}
于 2012-11-12T09:49:11.480 回答
1

事实证明,ComboChart 将 annotation/annotationText 列添加到图表上创建的最后一个系列 - 这意味着角色被添加到条形图中,它不支持 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;
}
于 2012-11-15T18:35:18.860 回答