Android 条形图的 GraphView 自定义水平标签
Android GraphView Custom Horizontal Label for Bar Graph
我尝试使用 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);
}
结果与我预期的不一样,因为只显示 3....1 个标签没有显示。
我在这里缺少什么吗?任何答案将不胜感激
条形图系列按 x 值按升序绘制数据点,
所以
- 系列 3(0,5) "YOUTH"
- 系列 1(2,10) "NOS"
- 系列 2(3,3) "IT"
- 系列(5,5),"SQA"
所以标签的顺序应该是 "YOUTH, NOS, IT, SQA"
另外,我不认为水平标签与实际的条形位置相关联,
所以我会完全删除底部标签,只留下图例
我尝试使用 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);
}
条形图系列按 x 值按升序绘制数据点, 所以
- 系列 3(0,5) "YOUTH"
- 系列 1(2,10) "NOS"
- 系列 2(3,3) "IT"
- 系列(5,5),"SQA"
所以标签的顺序应该是 "YOUTH, NOS, IT, SQA" 另外,我不认为水平标签与实际的条形位置相关联, 所以我会完全删除底部标签,只留下图例