Я создал график, используя 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 места в случае наличия отрицательных чисел
для большей ясности взгляните на эту картинку:
