用于条形图的Android GraphView自定义水平标签

时间:2017-08-10 09:00:08

标签: android android-graphview

我尝试使用GraphView在我的应用中创建图表

我尝试使用以下代码的条形图

@Override
public void initGraph(GraphView graph) {
    // first series is a line
    BarGraphSeries<DataPoint> series = new BarGraphSeries<>(new DataPoint[] {

            new DataPoint(5,5)
    });
    series.setColor(Color.BLUE);
    series.setSpacing(10);
    series.setAnimated(true);
    graph.addSeries(series);

    BarGraphSeries<DataPoint> series1 = new BarGraphSeries<>(new DataPoint[] {
            new DataPoint(2,10)
    });
    series1.setColor(Color.BLACK);
    series1.setSpacing(10);
    series1.setAnimated(true);
    graph.addSeries(series1);


    BarGraphSeries<DataPoint> series2 = new BarGraphSeries<>(new DataPoint[] {
            new DataPoint(3,3)
    });
    series2.setColor(Color.YELLOW);
    series2.setSpacing(10);
    series2.setAnimated(true);
    graph.addSeries(series2);

    BarGraphSeries<DataPoint> series3 = new BarGraphSeries<>(new DataPoint[] {
            new DataPoint(0, 5)
    });
    series3.setColor(Color.RED);
    series3.setSpacing(10);
    series3.setAnimated(true);
    graph.addSeries(series3);

    graph.getViewport().setXAxisBoundsManual(true);
    graph.getViewport().setMinX(0);
    graph.getViewport().setMaxX(5);

    StaticLabelsFormatter staticLabelsFormatter = new StaticLabelsFormatter(graph);
    // legend
    series.setTitle("SQA");
    series2.setTitle("IT");
    series1.setTitle("NOS");
    series3.setTitle("YOUTH");
    graph.getLegendRenderer().setVisible(true);
    graph.getLegendRenderer().setAlign(LegendRenderer.LegendAlign.TOP);
    staticLabelsFormatter.setHorizontalLabels(new String[] {"YOUTH", "NOS", "IT", "SQA"});
    graph.getGridLabelRenderer().setLabelFormatter(staticLabelsFormatter);
}

enter image description here 结果不像我预期的那样只显示3 .... 1的标签没有显示。 这里有什么我想念的吗?任何答案将不胜感激

1 个答案:

答案 0 :(得分:0)

Bar系列以x值的递增顺序绘制数据点, 所以

  • series3(0,5)&#34; YOUTH&#34;
  • series1(2,10)&#34; NOS&#34;
  • series2(3,3)&#34; IT&#34;
  • 系列(5,5),&#34; SQA&#34;

所以标签的顺序应该是&#34; YOUTH,NOS,IT,SQA&#34; 另外,我不认为水平标签与实际的酒吧位置相关联, 所以我会删除底部的标签,只留下传奇