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