2011-12-22 2 views
0

Я создал граф с помощью Java и свинг, но это хорошо только для показа положительных чисел и некоторые отрицательные числа меньше, чем -14 мысль, что я использовал был:Как масштабировать вверх/вниз график при получении различного диапазона чисел?

  • создать поле
  • добавить свой Х и Y оси метки
  • получить массив чисел
  • получить максимальное число для указания максимального числа в массиве
  • создать шкалу, используя следующий код:


double scale = (double)(height - 2*borderSpace)/getMax(); 

, а затем построить свой график линии, выше решения идеально подходит для положительных значений для отрицательных значений, которые я сделал трюк

int height2 = getHeight() - getHeight()/2; 
double scale = (double)(height2 - 2*borderSpace)/getMax(); 

, который является только работает до -14 не менее чем ,

для рисования линий Я использую этот код

//borderspace = 20 
double xInc = (double)(width - 2*borderSpace)/(data.length-1); 
     double scale = (double)(height - 2*borderSpace)/getMax(); 
     g2.setPaint(Color.green.darker()); 
     for(int i = 0 ; i < data.length-1; i++) { 
      double x1 = borderSpace + i*xInc; 
      double y1 = height - borderSpace - scale*data[i]; 

      double x2 = borderSpace + (i+1)*xInc; 
      double y2 = height - borderSpace - scale*data[i+1]; 
      g2.draw(new Line2D.Double(x1, y1, x2, y2)); 
     } 

Я хочу иметь коробку, но ось Y должна быть на левой стороне (я не хочу менять место оси Y), и я просто хочу изменить ось X место в случае наличия отрицательных чисел за то, что прояснению вы можете посмотреть на эту картину:

enter image description here

+0

Извините, что ваш вопрос очень неясен. Вы не опубликовали какой-либо код, который можно протестировать. –

+0

Я снова добавил свой метод рисования линии –

+1

, а не часть кода, который можно протестировать. также это начинает ощущаться как домашнее задание, у вас есть базовые расчетные сокращения, такие как 'height2 = getHeight() - getHeight()/2'; так как 'height2 = getHeight()/2' хватает ... В любом случае вы не используете height2 в любом месте своего метода рисования ... Или, если вам не ясно, как это сделать. –

ответ

1

вы можете взглянуть на JFreeChart создать свой график а не пытаться заваривать собственное решение с нуля.

+0

Я не хочу использовать какое-либо третье решение –