Как увеличить / уменьшить график, получая другой диапазон чисел? - PullRequest
0 голосов
/ 22 декабря 2011

Я создал график, используя java и swing, но он хорош только для отображения положительных чисел и некоторых отрицательных чисел меньше -14. Идея, которую я использовал, была:

  • создать коробку
  • добавить метку оси X и 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

1 Ответ

1 голос
/ 22 декабря 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...