2016-12-20 3 views
2

Я использую MPAndroidChart, чтобы создать простую гистограмму внутри падающей панели инструментов. Когда я добавляю записи, значение записи видно на правильной высоте на графике, но я не вижу эту панель.BarChart с MPAndroidChart: бары невидимы

Это, как я создаю свои переменные:

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 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(); 

Graph

У меня нет проблемы при создании гистограммы в других частях моего приложения. Когда я рисую линейные диаграммы внутри сворачивающейся панели инструментов, он также отлично работает.

+0

вы пробовали 'barChart.setHardwareAccelerationEnabled (ложь);'? –

+0

Спасибо, я просто попробовал, но результат тот же – apat

+0

Какая версия MPAndroidChart это? Является ли результат на всех телефонах или на одном телефоне? –

ответ

1

Вы не хватает, чтобы установить .setColor

Попробуйте с

barDataSet.setColor(Color.rgb(0, 155, 0)); //Put your RGB Color 
+0

Нет, на самом деле я это делаю, я просто написал havent код, но я делаю: – apat

+0

Я делаю: barDataSet.setColor (Color.WHITE) – apat

+0

http://stackoverflow.com/questions/30397643/mpandroidchart-chart-not-displaying –

0

я столкнулась с такой же вопрос, когда я использовал метку времени для значений оси X, который сообщается как ошибка в библиотеке, поэтому я вышел со следующим раствором

сначала создать ArrayList:

ArrayList<String> xAxis_stringArray = new ArrayList<>(); 

, а затем во время добавления записи в список ввода, установите значение х будет индекс источника данных (строковое значение) и добавьте строковое значение в массиве строк так:

jsonObject = results.getJSONObject(index); String s = jsonObject.getString(x); xAxis_stringArray.add(s); entries.add(new Entry(Float.valueOf(index), Float.valueOf(jsonObject.getString(y))));

и, наконец, передать XAxis классу значение форматировочной:

XAxis xAxis = sum_chart.getXAxis(); 
xAxis.setValueFormatter(new TimeAxisValueFormatter(xAxis_stringArray)); 

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)); 
}} 
0

У меня была такая же проблема только сейчас, для меня увеличение барьера позволило решить проблему. Я думаю, что проблема кроется в том, как распространяются ваши данные, что влияет на ширину линий. Если у вас есть набор данных, который распространяется только через час и имеет запись за каждую минуту этого часа, я думаю, что эта проблема не будет существовать. Но если вы похожи на меня и имеете разреженные данные в течение 5 часов или около того, тогда ширина экрана становится меньше и меньше, чтобы разместить все эти записи, и панель просто исчезает.

Пример:

 data.setBarWidth(2f); 

enter image description here

Когда я увеличил BarWidth до 80F:

 data.setBarWidth(80f); 

enter image description here

Смежные вопросы