带MPAndroidChart的条形图:条形图不可见
我正在使用MPAndroidChart在一个折叠的工具栏中生成一个简单的条形图。当我添加条目时,条目的值在图表上的正确高度处可见,但我看不到条形图 这就是我创建变量的方式:带MPAndroidChart的条形图:条形图不可见,android,mpandroidchart,Android,Mpandroidchart,我正在使用MPAndroidChart在一个折叠的工具栏中生成一个简单的条形图。当我添加条目时,条目的值在图表上的正确高度处可见,但我看不到条形图 这就是我创建变量的方式: final List<BarEntry> barEntries = new ArrayList<>(); final BarDataSet barDataSet = new BarDataSet(barEntries, getResources().getString(R.string.cycles_
final List<BarEntry> barEntries = new ArrayList<>();
final BarDataSet barDataSet = new BarDataSet(barEntries, getResources().getString(R.string.cycles_profiled));
final BarData barData = new BarData(barDataSet);
final List barEntries=new ArrayList();
final BarDataSet BarDataSet=新的BarDataSet(barEntries,getResources().getString(R.string.cycles_profiled));
最终BarData BarData=新BarData(barDataSet);
这是我填充数据和刷新图表的方式:
final Calendar cal = getFirstDayOfWeek();
for (int i = 0; i < NUMBER_OF_DAYS; i++) {
long date = cal.getTimeInMillis();
barEntries.add(new BarEntry(date, map.get(date)));
cal.add(Calendar.DAY_OF_WEEK, 1);
}
barDataSet.setValues(barEntries);
barChart.setData(barData);
barData.notifyDataChanged();
barChart.notifyDataSetChanged();
barChart.invalidate();
final Calendar cal=getFirstDayOfWeek();
对于(int i=0;i<天数;i++){
long date=cal.getTimeInMillis();
添加(新的BarEntry(日期,map.get(日期));
cal.add(日历日/周,1);
}
barDataSet.setValues(barEntries);
条形图.设置数据(barData);
barData.notifyDataChanged();
barChart.notifyDataSetChanged();
barChart.invalidate();
我在应用程序的其他部分创建条形图没有问题。当我在折叠工具栏中绘制折线图时,它也可以正常工作。您缺少设置.setColor 试一试
barDataSet.setColor(Color.rgb(0, 155, 0)); //Put your RGB Color
当我为X轴值使用时间戳时,我也面临同样的问题,该值在库中被报告为一个bug,因此我提出了以下解决方案 首先创建arraylist:
ArrayList<String> xAxis_stringArray = new ArrayList<>();
TimeAxisValueFormatter类:
public class TimeAxisValueFormatter implements IAxisValueFormatter {
ArrayList<String> arrayList = new ArrayList<>();
public TimeAxisValueFormatter(ArrayList<String> list) {
this.arrayList = list;
}
@Override
public String getFormattedValue(float value, AxisBase axis) {
return arrayList.get(Math.round(value));
}}
公共类TimeAxisValueFormatter实现IAxisValueFormatter{
ArrayList ArrayList=新的ArrayList();
public TimeAxisValueFormatter(ArrayList列表){
this.arrayList=list;
}
@凌驾
公共字符串getFormattedValue(浮点值,AxisBase轴){
返回arrayList.get(Math.round(value));
}}
我刚才也遇到了同样的问题,对我来说,增加条宽解决了这个问题。我认为问题在于数据的分布如何,这会影响行的宽度。如果您有一个仅分布在一小时内的数据集,并且该数据集每分钟都有条目,我认为这个问题不会存在。但是如果你像我一样,在5个小时左右的时间里有稀疏的数据,那么barwidth就会变得越来越小,以容纳所有的条目,而bar就会消失
例如:
data.setBarWidth(2f);
当我将条形宽度增加到80f时:
data.setBarWidth(80f);
也有同样的问题,多亏了。 由于某些原因,
条形图
在毫秒数上有困难。。将毫秒转换为分钟:TimeUnit.millides.toMinutes(毫秒值)
你的生活将是甜蜜的
- 如果转换为分钟没有帮助,尝试使用不同(更高)的时间单位。对你有好处的时间单位是酒吧间的平均间隙,对我来说是小时。
- 另一个可能有助于您设置图表样式的有趣点是,在方法
中,输入setBarWidth(float mBarWidth)
表示的是值而不是像素mBarWidth
- 另一个可能有助于您设置图表样式的有趣点是,在方法
barChart.setHardwareAccelerationEnabled(false)代码>?谢谢,我刚试过,但结果是一样的MPAndroidChart是什么版本的?结果是在所有手机上,还是只在一部手机上?@apat:你找到解决方案了吗?我面临同样的问题…@androfan不,我还没有找到解决方案,对不起。您的图形也在折叠工具栏中吗?谢谢。一个很好的解决办法。
data.setBarWidth(80f);