#java #graph #console-application
Вопрос:
Я пытаюсь построить график, показывающий вес с соответствующими датами, из двух списков массива. Один с локальными датами (дата ввода веса), а другой удваивается (вес). По оси X будет указан вес, а по оси Y-дата.
Я пробовал использовать некоторые циклы for, но это не дало того, чего я хотел: я хочу оставаться в консоли и хочу, чтобы она была горизонтальной. У меня не так много кода, чтобы показать, только чтобы дать немного наглядного представления о том, чего мне нравится достигать. Я не знаю, возможно ли вообще получить то, что я хочу, в консольном приложении.
Я нашел некоторый код для построения графика по вертикали, но мне не нравится, как это выглядит.
(В приведенном ниже коде я использовал уже заполненный массив, просто для наглядности.)
public void writeGraph() { Arrays.sort(weightSorted); for (int i = weightSorted.length - 1; i gt;= 0; i--) { System.out.println(weightSorted[i] "n"); } System.out.println("KG"); System.out.print(" "); System.out.println(" "); System.out.print("Date gt; "); for (int in = 0; in lt; weighDate.length; in ) { System.out.print(weighDate[in] " "); } }
Это будет выглядеть так:
90.0 86.0 83.8 83.3 81.0 78.5 75.0 73.9 70.3 65.5 KG Date gt; 2021-01-14 2021-02-25 2021-03-06 2021-04-04 2021-05-11 2021-06-20 2021-07-02 2021-08-28 2021-09-15 2021-10-07
А затем я хочу, чтобы веса по оси y были удвоены по сравнению с соответствующими датами по оси x.. Я надеюсь, что это даст вам представление о том, чего я пытаюсь достичь.
Ответ №1:
Первое, что я бы сделал, это попытался спланировать структуру выходного графика в сетке символов. Подсчитайте, сколько символов в каждой части вашего графика, а затем спланируйте пробелы вокруг них.
Кроме того, я думаю, что, возможно, a Maplt;LocalDate, Doublegt;
даст вам лучшие инструменты для обработки данных.
После этого подумайте, возможно, о создании метода, который, используя имеющиеся у вас данные X/Y, построит соответствующую горизонтальную линию. т. Е.: Для строки 81 КГ посмотрите, есть ли точка данных X/Y с этим значением в любой дате, затем, если да, нанесите ее соответствующим символом (вертикальной линией) в строке.
TLDR: Стройте по одной строке за раз, сверху вниз, используя имеющиеся у вас данные и планируя необходимые места.
Комментарии:
1. Спасибо за ваш вклад! Я посмотрю на это.