Java GraphView垂直标签以整数形式从0递增
目前,下面的代码显示附加的条形图,其刻度包括小数,从2开始 我的问题是:有没有办法从0开始y轴标签,并将整数增加到数据的最大值?例如,在这里,0,1,2,3,4,5Java GraphView垂直标签以整数形式从0递增,java,android,bar-chart,android-graphview,Java,Android,Bar Chart,Android Graphview,目前,下面的代码显示附加的条形图,其刻度包括小数,从2开始 我的问题是:有没有办法从0开始y轴标签,并将整数增加到数据的最大值?例如,在这里,0,1,2,3,4,5 barData = this.getIntent().getExtras().getString("GraphData"); GraphViewSeries barGraphSeries = new GraphViewSeries( new GraphViewData
barData = this.getIntent().getExtras().getString("GraphData");
GraphViewSeries barGraphSeries = new GraphViewSeries(
new GraphViewData[] {
new GraphViewData(0, Integer.parseInt(barData
.substring(0, barData.indexOf(",")))),
new GraphViewData(1, Integer.parseInt(barData
.substring(barData.indexOf(",") + 1,
barData.length()))) });
GraphView statGraphView = new BarGraphView(this,
"Current Stat Graph");
statGraphView.getGraphViewStyle().setGridColor(Color.BLACK);
statGraphView.getGraphViewStyle().setHorizontalLabelsColor(
Color.BLACK);
statGraphView.getGraphViewStyle().setVerticalLabelsColor(
Color.BLACK);
String[] horLabels = { "Correct", "Incorrect" };
statGraphView.setHorizontalLabels(horLabels);
statGraphView.getGraphViewStyle().setNumHorizontalLabels(2);
statGraphView.getGraphViewStyle().setNumVerticalLabels(10);
statGraphView.addSeries(barGraphSeries);
LinearLayout layout = (LinearLayout) findViewById(R.id.graph1);
layout.addView(statGraphView);
首先要知道的是,如果让GraphView管理Y刻度,它将显示10个间隔,即11个值。 因此,如果您的值介于0到10或0到20之间,则显示的值将是整数 您可以使用GraphView.setManualYAxisBounds(双最大值、双最小值)手动设置垂直边界 在您的情况下,您可能希望使用setManualYAxisBounds(5,0),但不会显示整数。 因此,必须使用getGraphViewStyle().setNumVerticalLabels(6) 下面是一段代码,我用它来动态调整从0到200的缩放值,最大缩放值尽可能接近我数据的最大值(我希望我可以理解,lol)
int-maxValue=…//在这里,您可以找到您的最大值
//搜索两个垂直标签之间的间隔
整数区间;
如果(最大值
int maxValue = ... // here, you find your max value
// search the interval between 2 vertical labels
int interval;
if (maxValue <= 55) {
interval = 5; // increment of 5 between each label
} else if (maxValue <= 110) {
interval = 10; // increment of 10 between each label
} else {
interval = 20; // increment of 20 between each label
}
// search the top value of your graph, it must be a multiplier of your interval
int maxLabel = maxValue;
while (maxLabel % interval != 0) {
maxLabel++;
}
// set manual bounds
setManualYAxisBounds(maxLabel, 0);
// indicate number of vertical labels
getGraphViewStyle().setNumVerticalLabels(maxLabel / interval + 1);
// now, it's ok, you should have a graph with integer labels