我有一个条形图,我基本上把我的屏幕限制在12条,但是,因为都很小,我想让用户放大看到的值更好。发生的情况如下,如果图形的最后一个条形图不可见,则没有可见的条形图,但是,如果最后一个条形图在帧中,则缩放正常工作,图形不会消失。
请看这些图片中的一些示例,首先,完整的法线图:
标准图形
一切仍然可见
现在,我要放大我的图表一点,注意标签开始消失,因为最后一个栏是看不见的:
放大时标签自动隐藏
此时,如果我放大到最后一个条离开视图的点,整个图形将从视图中消失,没有显示任何条,只有在最后一个条返回视图时才会再次显示:
所有酒吧现在都藏起来
我的重要代码引用:
XAxis xAxis = barsWeight.getXAxis(); // barsWeight is BarChart
xAxis.setPosition(XAxis.XAxisPosition.TOP);
xAxis.setDrawGridLines(false);
xAxis.setGranularity(0f);
xAxis.setLabelCount(11);
xAxis.setAxisMinimum(0f);
ArrayList<String> monthList= new ArrayList<>();
monthList.add("JAN");
monthList.add("FEV");
monthList.add("MAR");
monthList.add("ABR");
monthList.add("MAI");
monthList.add("JUN");
monthList.add("JUL");
monthList.add("AGO");
monthList.add("SET");
monthList.add("OUT");
monthList.add("NOV");
monthList.add("DEZ");
xAxis.setValueFormatter(new IndexAxisValueFormatter(monthList));
基本上我所做的是添加一个条形图数据到我的条形图中,我的条形图数据包含一个条形图数据集,其中包含一个barentry数组
如果最后一个条形图条目在图形中不可见,为什么可视化会消失?
添加数据:
private void setDataBar( ArrayList<BarEntry> dadosPeso, BarChart barrasGraf, boolean isKg){
BarDataSet barDataSet;
if(barrasGraf.getData() != null && barrasGraf.getData().getDataSetCount() > 0){
barDataSet = (BarDataSet) barrasGraf.getData().getDataSetByIndex(0);
barDataSet.setValues(dadosPeso);
barDataSet.setColors(ColorTemplate.JOYFUL_COLORS);
if(isKg){
barrasGraf.getBarData().setValueFormatter(new IndexAxisValueFormatter() {
@Override
public String getFormattedValue(float value) {
DecimalFormat df = new DecimalFormat("#.##");
return df.format(value) + " Kg";
}
});
}else{
barrasGraf.getBarData().setValueFormatter(new IndexAxisValueFormatter() {
@Override
public String getFormattedValue(float value) {
DecimalFormat df = new DecimalFormat("#.##");
return df.format(value) + " @";
}
});
}
barrasGraf.getData().notifyDataChanged();
barrasGraf.notifyDataSetChanged();
}else{
barDataSet = new BarDataSet(dadosPeso, "Pesagens para cada data");
barDataSet.setColors(ColorTemplate.JOYFUL_COLORS);
barDataSet.setDrawIcons(false);
ArrayList<IBarDataSet> dataSets = new ArrayList<>();
dataSets.add(barDataSet);
BarData dadosBarra = new BarData(dataSets);
dadosBarra.setValueTextSize(15f);
dadosBarra.setValueTextColor(Color.BLACK);
if(isKg) {
dadosBarra.setValueFormatter(new IndexAxisValueFormatter() {
@Override
public String getFormattedValue(float value) {
DecimalFormat df = new DecimalFormat("#.##");
return df.format(value) + " Kg";
}
});
}else{
dadosBarra.setValueFormatter(new IndexAxisValueFormatter() {
@Override
public String getFormattedValue(float value) {
DecimalFormat df = new DecimalFormat("#.##");
return df.format(value) + " @";
}
});
}
dadosBarra.setBarWidth(.9f);
barrasGraf.setData(dadosBarra);
}
}
暂无答案!
目前还没有任何答案,快来回答吧!