Incanter похож на R, который имеет множество применений для статистических вычислений. Incanter — это версия R на основе Clojure, работающая на JVM. Он имеет множество полезных функций, помогающих строить графики и анализировать данные. В этом посте мы рассмотрим только построение графиков, но в следующем посте мы рассмотрим анализ данных с помощью инкантера. А пока давайте сделаем несколько графиков!

Вперед, создайте новый проект Clojure с помощью leiningen. Добавьте следующее в ваш project.clj, чтобы включить incanter в свои зависимости.

:dependencies [[org.clojure/clojure "1.8.0"] [incanter "1.5.5"]]

Идите вперед и запустите lein deps, чтобы leiningen мог получить incanter в качестве зависимости.

lein deps

После этого мы готовы приступить к редактированию core.clj и сначала изучить, как создать аккуратную маленькую гистограмму.

Итак, давайте используем вещи, которые нам понадобятся от incanter, чтобы создать ваше пространство имен, как показано ниже, просто замените пространство имен на любой проект, который вы создали в моем случае, я сделал lein new incantertut, но ваш будет другим, поэтому измените ту часть того, что вы сделали.

(ns incantertut.core (:use [incanter.charts :only [histogram scatter-plot pie-chart xy-plot]] [incanter.core :only [view]] [incanter.stats :only [sample-normal]]))

В этом посте мы будем рассматривать только гистограммы, диаграммы рассеяния и круговые диаграммы. (Плюс xy-график)

Следующая часть интересна, потому что это буквально одна строка для создания и просмотра графика и вот.

(view (histogram (sample-normal 10000 :mean 10)) :width 700 :height 700)

После запуска вы должны увидеть следующий график.

Приведенный выше однострочник создает гистограмму. Функция нормальных выборок создает нормальное гауссово распределение с 10 000 точек. Вы можете выбрать среднее значение, которое вы хотите для распределения, в этом случае оно было установлено на 10, по умолчанию это 1. Вы также можете установить: sd, которое является стандартным отклонением. Функция просмотра принимает другие параметры, такие как ширина и высота, поэтому вы можете поиграть с теми, которые изменяют начальную высоту/ширину гистограммы. Обратите внимание, что функция просмотра может делать больше, чем просто графики. Он также может просматривать URL-адреса и изображения!

Далее давайте посмотрим, как сделать точечную диаграмму, которая также в значительной степени является однострочной и точно такой же, как создание гистограммы, ожидая, что вместо этого мы используем точечную диаграмму и заранее определяем некоторые переменные.

(def x [1 2 3 4 5]) (def y [5 9 11 20 24]) (view (scatter-plot x y))

x и y определяют данные для оси x, а переменная y содержит данные для оси y. Обратите внимание, что переменные x и y относятся к типу persistVector.

Обратите внимание, что набор данных не является идеально линейным, но похоже, что вы можете нарисовать линию наилучшего соответствия или линию регрессии, которую я расскажу позже о том, как это сделать в Clojure. А также найти значения, такие как значение R2, говорящее нам, насколько хорошо данные соответствуют этой линии наилучшего соответствия.

Теперь для файлового графа мы построим круговую диаграмму.

Круговая диаграмма, которую мы собираемся сделать, будет включать элементы, составляющие атмосферу Земли, и для этого мы определим две переменные, называемые элементами и процентами. Оба постоянных вектора, однако, элементы будут состоять из строк, которые будут содержать названия элементов, а проценты будут содержать процентное содержание этого элемента в атмосфере. Основная функция здесь для создания круговой диаграммы называется круговой диаграммой, которая будет принимать два аргумента: элементы и проценты, а также вы можете добавить дополнительный параметр, добавляя :title в качестве строкового значения, такого как «Состав Земли». Атмосфера».

(def elements ["Nitrogen" "Oxygen" "Argon" "Carbon"]) (def percentages [78 21 0.9 0.03]) (view (pie-chart elements percentages :title "Composition of the Earth's Atmosphere"))

Теперь скажем, что вам нужна диаграмма рассеяния, но с соединенными линиями, когда вы используете xy-диаграмму.

(view (xy-plot x y))

В incanter доступно больше вариаций графиков, но я только что рассмотрел некоторые из наиболее простых, которые люди склонны использовать, так что теперь вы можете делать гистограммы, диаграммы рассеяния, xy-графики и круговые диаграммы. Все в нескольких строках кода Clojure.

Первоначально опубликовано на defunsm.github.io.