2012-02-22 4 views
1

Я пытаюсь создать гистограмму, показывающую уровни запасов продуктов питания, со временем снижающиеся.Графические диаграммы диаграммы Android GraphView

I used the sample code from here:

Я изменил код немного в GraphViewDemo для размещения 4 значения на оси Y:

("большие", "хорошо", "хорошо", и "плохие") и 4 значения по оси X

(«сегодня», «завтра», «2 дня», «3 дня»)

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

float[] values = new float[] { 1.0f,1.5f, 2.0f, 2.5f }; 
    String[] verlabels = new String[] { "great", "good", "ok", "bad"}; 
    String[] horlabels = new String[] { "today", "tomorrow", "2 days", "3 days" }; 
    GraphView graphView = new GraphView(this, values, "Stock Levels",horlabels, verlabels, GraphView.BAR); 
    setContentView(graphView); 

Это хорошо с номером 1.0f, 1.5f, 2.0f, 2.5f. Проблема в том, что если я изменил первый float на 2.0 (ожидая, что первый бар изменится на высоту «хорошего»), все бары изменится.

В этом случае вид изменился бы на первую и третью высоты бара между «ок» и «хорошим», а второй - высотой «плохого».

Это может быть связано с преобразованием пикселей в классе GraphView рядом с линией 94, но код не очень хорошо комментируется, и мне трудно понять все.

ответ

0

Вопрос, казалось бы с этой линией в классе GraphView:

canvas.drawRect((i * colwidth) + horstart, (border - h) + graphheight, ((i * colwidth) + horstart) + (colwidth - 1), height - (border - 1), paint); 

Так я нашел значения 4 высоты баров может быть на графике («большой», «хорошо», " ok "," bad ") и создал оператор switch, который установил бы переменную. Коммутатор будет принимать значения 1.0, 1.5, 2.0 и 2.5 и связывать их с соответствующими значениями высоты бара.

Затем я заменил высоту на переменную вместо следующего вычисления «(border-h) + graphheight». Таким образом, было всего 4 высоты набора, которые могли бы быть в баре.

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