0 值的 MPAndroidChart 垂直轴
MPAndroidChart vertical axis for 0 values
我正在尝试用一些值填充垂直条形图。我仍然想保留等于 0 的值作为条目。但是,当存在等于 0 的现有条目时,图表看起来很可疑。
第一张图片显示了如果所有条目都不为零时图表的外观。enter image description here
第二张图片显示了如果条目等于 0 时图表的外观。enter image description here(图表在垂直轴上并不完全从 0 开始,它在下方)
第三张图片显示了如果所有条目都为零时图表的样子。enter image description here(如您所见,图表从垂直轴上的 -1 开始)
有没有办法让它看起来像第一张图片,尽管值为 0?
我发现了如何实现从零开始,即使每个值都是 0。在下面的代码中,我注释了所有内容:
public class MainActivity extends AppCompatActivity {
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BarChart barChart = findViewById(R.id.bar_chart);
ArrayList<BarEntry> inventory = new ArrayList<>();
inventory.add(new BarEntry(1f,0));
inventory.add(new BarEntry(2f,10));
inventory.add(new BarEntry(3f,20));
inventory.add(new BarEntry(4f,30));
inventory.add(new BarEntry(5f,40));
//Colors & Textsize
BarDataSet barDataSet = new BarDataSet(inventory,"Inventory");
barDataSet.setColors(ColorTemplate.COLORFUL_COLORS);
barDataSet.setValueTextColor(Color.BLACK);
barDataSet.setValueTextSize(16f);
//Start at zero even all values are 0 for left YAxis.
YAxis yAxis = barChart.getAxis(YAxis.AxisDependency.LEFT);
yAxis.setStartAtZero(true);
//Start at zero even all values are 0 for right YAxis.
YAxis yAxis1 = barChart.getAxis(YAxis.AxisDependency.RIGHT);
yAxis1.setStartAtZero(true);
//Define every space between the scales you want to.
XAxis xAxis = barChart.getXAxis();
xAxis.setGranularity(1.0f);
xAxis.setGranularityEnabled(true);
/*
//Disables the right YAxis (Optional)
YAxis rightYAxis = barChart.getAxisRight();
rightYAxis.setEnabled(false);*/
//Other Settings
BarData barData = new BarData(barDataSet);
barChart.setData(barData);
barChart.getDescription().setEnabled(false);
barChart.getLegend().setEnabled(false);
barChart.animateX(500);
}
}
如果您想进一步定制,我建议您查看 documentation。
结果
我正在尝试用一些值填充垂直条形图。我仍然想保留等于 0 的值作为条目。但是,当存在等于 0 的现有条目时,图表看起来很可疑。
第一张图片显示了如果所有条目都不为零时图表的外观。enter image description here 第二张图片显示了如果条目等于 0 时图表的外观。enter image description here(图表在垂直轴上并不完全从 0 开始,它在下方) 第三张图片显示了如果所有条目都为零时图表的样子。enter image description here(如您所见,图表从垂直轴上的 -1 开始)
有没有办法让它看起来像第一张图片,尽管值为 0?
我发现了如何实现从零开始,即使每个值都是 0。在下面的代码中,我注释了所有内容:
public class MainActivity extends AppCompatActivity {
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BarChart barChart = findViewById(R.id.bar_chart);
ArrayList<BarEntry> inventory = new ArrayList<>();
inventory.add(new BarEntry(1f,0));
inventory.add(new BarEntry(2f,10));
inventory.add(new BarEntry(3f,20));
inventory.add(new BarEntry(4f,30));
inventory.add(new BarEntry(5f,40));
//Colors & Textsize
BarDataSet barDataSet = new BarDataSet(inventory,"Inventory");
barDataSet.setColors(ColorTemplate.COLORFUL_COLORS);
barDataSet.setValueTextColor(Color.BLACK);
barDataSet.setValueTextSize(16f);
//Start at zero even all values are 0 for left YAxis.
YAxis yAxis = barChart.getAxis(YAxis.AxisDependency.LEFT);
yAxis.setStartAtZero(true);
//Start at zero even all values are 0 for right YAxis.
YAxis yAxis1 = barChart.getAxis(YAxis.AxisDependency.RIGHT);
yAxis1.setStartAtZero(true);
//Define every space between the scales you want to.
XAxis xAxis = barChart.getXAxis();
xAxis.setGranularity(1.0f);
xAxis.setGranularityEnabled(true);
/*
//Disables the right YAxis (Optional)
YAxis rightYAxis = barChart.getAxisRight();
rightYAxis.setEnabled(false);*/
//Other Settings
BarData barData = new BarData(barDataSet);
barChart.setData(barData);
barChart.getDescription().setEnabled(false);
barChart.getLegend().setEnabled(false);
barChart.animateX(500);
}
}
如果您想进一步定制,我建议您查看 documentation。
结果