Skip to content

usachev63/pf-2021-viz

Repository files navigation

Курс основ программирования на МКН СПбГУ

Проект 3: визуализация данных

Это проект первого курса СПбГУ факультета МКН "Современное программирование" — программа, рисующая диаграмму одного из доступных типов в графическом окне по входным данным (из файла или из консоли), с записью изображения в PNG файл (при необходимости). Проект использует библиотеки skiko и skija. Оригинальная постановка задачи: TASK.md.

Запуск

В релизах можно найти скомпилированный jar файл viz.jar. Запуск программы производится следующей командой:

java -jar viz.jar [-i INPUT_FILE] [-d DIAGRAM_TYPE] [OPTIONS...] [-o OUTPUT_FILE]

Все аргументы необязательны; порядок аргументов не имеет значения.

Запустить также можно непосредственно в среде разработки, указав нужные опции и аргументы.

Поддерживаемые типы диаграмм

Столбчатая диаграмма (гистограмма)

Можно вызвать, указав опции -d bar, -d column или -d histogram. Является диаграммой по умолчанию (она будет вызвана, если вообще не указывать опцию -d) Записи с отрицательными значениями запрещены.

Диаграмма-линия (график)

Можно вызвать, указав опции -d line, -d graph, -d plot или -d curve. Ось значений не обязательно начнается с нуля: диапазон подбирается автоматически под данные.

График с областями

Можно вызвать, указав опции -d area, -d fill. Записи с отрицательными значениями запрещены.

Круговая диаграмма

Можно вызвать, указав опции -d pie, -d circle или -d round. Поддерживает максимум десять различных цветов: при совпадении цвета проводятся серые линии между надписями и соответствующими секторами диаграммы. Данные, содержащие отрицательные значения, а также данные, сумма значений которых равна нулю, запрещены.

Входные данные

Опцией -i INPUT_FILE можно указать файл с данными для диаграммы. В случае, когда опция не использована, или когда файл не может быть найден или прочитан, данные считываются из консоли.

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

При вводе данных из консоли ввод следует заканчивать комбинацией CTRL+D в Linux и CTRL+Z с последующим Enter в Windows.

Упорядочивание данных

Следующими флагами можно задать порядок данных на диаграмме:

  • --sort - упорядочить в порядке возрастания значений
  • --rsort, --reverse-sort - упорядочить в порядке убывания значений
  • --lsort, --lex-sort - упорядочить в порядке возрастания названий (лексикографически)
  • --lrsort, --rlsort, --lex-reverse-sort, --reverse-lex-sort - упорядочить в порядке убывания названий (лексикографически)
  • --nsort, --no-sort - оставить порядок, как есть (опция по умолчанию)

Геометрические параметры диаграммы

  • Опцией -s SCALE (или --scale SCALE), где SCALE - вещественное число, можно задать относительный размер диаграммы. Размер по умолчанию равен 400. Наименьший разрешенный размер равен 50, а наибольший равен 2000.
  • Опцией -p PADDING (или --padding PADDING), где PADDING - вещественное число, можно задать абсолютный размер краев диаграммы. По умолчанию этот размер равен 50.

Цвет диаграммы

Для диаграмм типа bar, line и area можно задать цвет опцией -c COLOR (или --color COLOR). При этом COLOR может иметь один из следующих форматов:

  • Ключевое слово из списка: default, red, orange, brown, yellow, green, cyan, blue, purple, violet, pink, grey, gray, black.
  • xxxxxx или #xxxxxx - HEX-код цвета. Например, ff0000 или #FF0000.

Выходные данные

При корректном входе программа рисует диаграмму в графическом окне. Если использовать опцию -o OUTPUT_FILE, то программа дополнительно сохранит диаграмму в указанный файл в формате PNG.

Прочие опции

  • --no-window - не создавать графическое окно с диаграммой.
  • --silent, --quiet - включить режим, при котором нет вывода в консоль.

Примеры использования

Проверить программу вручную можно на примерах из папки samples.

Коды возврата

  • 0 — программа выполнилась успешно
  • 1 — программа выполнилась с ошибками (некорректные опции/аргументы или некорректные данные для диаграммы)

Тестирование

Исходный код сопровождён unit-тестами, покрывающими компоненты ввода и обработки данных.

Кроме того, с помощью класса src/test/kotlin/allSamples/CheckAllSamples.kt можно получить картинки сразу всех диаграмм из samples всех вомзожных типов и сравнить их с эталонными (но для этого нужно сначала сгенерировать эталонные картинки с помощью класса src/test/kotlin/allSamples/CreateAllSamples.kt).

Также, с помощью класса src/test/kotlin/AllColors.kt можно сгенерировать картинки в директории samples/colors/, представляющие некоторые доступные цвета диаграмм.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages