Генератор тепловых карт для табличных/матричных данных

У меня есть некоторые числовые данные в матричной форме, которые для обсуждения представляют собой значения некоторой функции f (x, y), выбранные на некоторой дискретной сетке. Эти данные находятся, скажем, в файле .csv или в таблице .ods (LibreOffice Calc)/.xlsx (Excel); конечно, я могу изменить форматы, если это необходимо.

Я хочу создать тепловую карту для этих данных: прямоугольное изображение, которое в каждой позиции (x, y) имеет цвет, интенсивность которого пропорциональна некоторой разумной интерполяции f (x, y) с использованием выборочных данных.

Теперь на странице Википедии есть куча ссылок на программное обеспечение, которое создает тот или иной вид тепловых карт, но меня интересует сравнение между ними в отношении:

  • Интуитивность использования
  • Простота ввода ввода
  • Скорость
  • Поддержка карт с бесконечным разрешением
  • Возможность создания выходных файлов в различных форматах
  • Конфигурируемость и возможность настройки (цветовые палитры, диапазоны значений, преобразование значений с помощью указанной функции, генерация значений только в точках сетки или их генерация в виде наложений, меток и т. д.))

Кроме того, существуют ли форматы, которые поддерживают создание svg, которые каким-то образом поддерживают тепловые карты, то есть с использованием двухвариантной окраски градиентной области?

(Я тайно надеюсь на плагин для LibreOffice, но, похоже, его нет.)

Требования:

  • Бесплатно, бесплатно и с открытым исходным кодом, если только это не какое-то дополнение к Excel.
  • Linux, желательно также Windows

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

Примете ли вы решение в формате HTML или PDF? График, гистограмма или географическое наложение? Чем больше информации вы нам предоставите, тем лучший ответ мы сможем вам дать.
@Mawg: (1) Да. (2) Как вариант, конечно, но не в том случае, если я не могу этого избежать. Только тепловую карту, пожалуйста.

Ответы (4)

Вот более простой способ.

Существует бесплатная утилита с открытым исходным кодом xyzдля быстрой и удобной визуализации трехмерных числовых данных из любого файла CSV.

Он выполняет автоматическую интерполяцию по измерениям X, Y, поэтому он работает даже с частичными (не полной сеткой) данными. Он позволяет извлекать любой столбец по имени или индексу из больших наборов данных и имеет множество других опций и параметров, которые можно установить из командной строки. например, изменить заголовок, метки осей, цветовую схему, добавить ли контурные линии и многое другое.

Вот пример вывода, созданного из volcano.csvнабора данных R-проекта:

вулкан.png, автоматически сгенерированный из набора данных R <code>volcano.csv</code>

Вот еще один пример, показывающий управление тепловой картой из командной строки:

# Use same data-file, with explicit column indexes, no contour-lines
# different color-scheme, use log-scale on the X-axis, and customized
# resolutions on two of the axes
xyz volcano.csv 0 1 2 cl=0 xscale=log \
    xlab='X (log scale)' ylab=Y title='log-squished seismic volcano' \
    cmap=seismic zres=40 xres=50

изображение сплющенного бревна вулкана

xyzнаписано в python, используя pandas+ matplotlib.

xyzявляется ФОСС. Исходники можно скачать из моего репозитория скриптов на github: https://github.com/arielf/scripts .

Вот прямая ссылка на необработанный скрипт xyz

Сценарий выдает сообщение об использовании при вызове без параметров или с ошибочными параметрами.

(Полное раскрытие: я автор xyz.)

Спасибо за написание этого инструмента. Вы упомянули, что это проще, чем gnuplot. Можете пояснить в каком смысле?
Он автоматизирует большую часть работы, все имеет дефолт, в т.ч. интерполяцией, поэтому все, что вам нужно для создания изображения, — это просто предоставить файл данных и столбцы, которые вы хотите извлечь/построить. напр xyz datafile.csv 0 1 2. Это дает вам дополнительный контроль через параметры командной строки, поэтому более естественно (и я хорошо знаком с gnuplot) использовать непосредственно из командной строки, без необходимости изучать новый (даже небольшой) язык/синтаксические соглашения. Сравните длину и сложность скрипта, такого как gnuplot.sourceforge.net/demo_5.0/heatmaps.7.gnu , с типичным использованием xyz непосредственно на данных.

Gnuplot должен соответствовать вашим потребностям. Это портативная графическая утилита, управляемая из командной строки, для Linux, OS/2, MS Windows, OSX, VMS и многих других платформ. Он относительно прост в использовании, и вы найдете множество руководств в Интернете. Поддерживает множество выходных форматов, таких как pdf, png, gif, jpeg, LaTeX, metafont, emf, svg и HTML5. Согласно демонстрациям, доступным на веб-сайте проекта, он может создавать 2D- и 3D-тепловые карты.

Одна из возможностей — использовать сценарии макросов Python в LibreOffice:

  • LibreOffice 5 поставляется с установкой Python 3.3.5.
  • python имеет ряд доступных графических компонентов, которые, кажется, можно установить
  • Python и большинство библиотек являются бесплатными, бесплатными, с открытым исходным кодом и кроссплатформенными.
... но разве вы не говорите мне реализовать это самостоятельно на основе универсальных библиотек? :-)
@einpoklum - Я говорю вам, что вы можете получить именно то, что хотите, если соберете вместе несколько строительных блоков.
Если вы хотите попробовать онлайн-сервис, есть plot.ly/alpha/workspace , который делает тепловые карты из Excel или Excel как данные.

@arielf использовал стандартный пример из R, но не упоминает прямое решение с использованием библиотеки plotly . Кроме того, R также эффективен для импорта наборов данных (например, read.csv, который вы также можете применить к локали csv).

https://plotly.com/r/тепловые карты/

Интуитивность использования: R — не самый простой язык

Простота ввода: сообщество R огромно

Скорость: R быстро

Поддержка карт с бесконечным разрешением: не знаю, что это значит

Возможность создания выходных файлов в различных форматах: с помощью RStudio можно создавать pdf и html, также возможен экспорт в изображения (jpg, png, svg)

Конфигурируемость и возможность настройки: вероятно, такие же, как и у другого программного обеспечения.

RStudio бесплатна для Windows и Linux.

Можете ли вы немного подробнее рассказать о критериях, которые я упомянул в своем вопросе?
Ну, это спасло мой день. У меня есть электронная таблица со многими листами, и мне нужно создать тепловую карту, объединив столбцы из разных листов. Таким образом, предварительная обработка данных неизбежна, и я сначала разделяю данные на набор файлов csv, а затем использую R для их объединения. Когда вы уже в R, создание тепловой карты с использованием библиотеки plotly — это всего лишь одна или две дополнительные строки.