Атомарное предложение по внедрению необработанных данных в визуализацию данных

Одна из самых неприятных проблем для специалиста по данным — найти данные, используемые для создания определенного графика, в научном журнале или онлайн-публикации. К счастью, с продвижением и принятием руководящих принципов для воспроизводимых исследований некоторые журналы требуют, чтобы ученые предоставляли необработанные данные, а некоторые даже запрашивают блокнот R или Jupyter с исходным кодом и данными для воспроизведения каждого отдельного графика в публикации.
Тем не менее, даже в тех случаях, когда есть ссылки на необработанные данные или блокнот, связанный с графиком, источник данных может быть потерян, поскольку графики сохраняются независимо, когда они извлекаются из исходного документа для включения в состав документа. презентация для конференции или внутреннего обсуждения.
Вот предложение для атомарного подхода, который незаметно вводит необработанные данные в визуализацию, чтобы ученые и пользователи данных могли не только оценить визуализацию, но и воссоздать ее и даже изучить другие альтернативы для интерпретации данных или объединения их с дополнительными наборами данных. .
В принципе, эту концепцию довольно просто реализовать. Требуется только встраивание необработанных данных в изображения PNG, SVG или другого типа. Таким образом, данные и визуализация сосуществуют в атомарном объекте в одном файле. Основные проблемы заключаются в том, как хранить и извлекать данные безболезненно и за кулисами, чтобы специалисты по данным могли сосредоточиться на задаче создания идеальной визуализации.
Большинство платформ анализа данных (например, R или Python) используют структуру данных, которая организует данные в двумерную таблицу строк и столбцов, очень похожую на электронную таблицу или фрейм данных. Затем эти объекты используются для построения атрибутов для создания графика или визуализации данных. Хотя эти объекты могут быть встроены в файл изображения при создании визуализации, это было бы нецелесообразно, поскольку они являются бинарными по своей природе и не будут стандартными для различных платформ анализа.
Более разумным подходом было бы преобразование этих структур в удобочитаемую текстовую строку, которую можно было бы легко интерпретировать в различных инструментах анализа. Файлы с разделителями «csv» или «tab» тоже не подходят из-за отсутствия структуры в этих файлах. Например, сопоставление данных с осями, идентификация метаданных и присвоение другой информации, необходимой для создания визуализации, не могли быть легко сохранены в этом формате. Очевидной альтернативой было бы создание файла JSON, содержащего необработанные данные и инструкции о том, как создать визуализацию и быстро преобразовать ее в текстовую строку. На самом деле JSON является стандартом де-факто для передачи данных в веб-приложениях, которые являются предпочтительной средой, где большинство этих визуализаций предоставляется ученым и пользователям.
Полученную строку можно сохранить в изображении как метаданные, используя формат файла изображения с возможностью обмена (Exif — https://exifdata.com). При этом изображение будет содержать необработанные данные, используемые для создания визуализации, не вмешиваясь в представление самого изображения (рис. 1а, 1б). То есть пользователи могут просматривать визуализацию на веб-странице (или любом другом носителе) и видеть изображение, не осознавая, что в нем находятся необработанные данные. Единственная разница в изображении будет заключаться в его размере, который будет увеличиваться пропорционально размеру данных.


Чтобы хранить/записывать необработанные данные внутри изображения, потребуется функция на разных платформах анализа (R, Python и т. д.) для записи JSON, необходимого для создания визуализации. Точно так же потребуется другая функция для извлечения/чтения и анализа необработанных данных из изображения, чтобы иметь к ним доступ. Как упоминалось выше, предпочтительной средой для визуализации данных является Интернет, и это делает JavaScript идеальным языком для написания этих функций, поэтому их можно использовать не только на различных платформах анализа, но и на любой веб-странице, где представлены визуализации.
CanvasXpress — это библиотека визуализации JavaScript с открытым исходным кодом, которая была разработана для того, чтобы делать то, что описано выше (вот ссылка на веб-сайт https://www.canvasXpress.org). Исходные данные, а также инструкции по созданию визуализации встраиваются в изображение без необходимости какого-либо дополнительного кодирования. CanvasXpress может создавать файлы PNG и SVG, которые эффективно служат оболочкой для необработанных данных. Изображения, созданные этой библиотекой, можно перетаскивать на другие графики CanvasXpress для воссоздания визуализаций и предоставления необработанных данных. Библиотека имеет ненавязчивый и хорошо разработанный пользовательский интерфейс, который позволяет ученым и пользователям видеть необработанные данные, а также другие функции для анализа данных, которые здесь не описаны (рис. 2).

CanvasXpress имеет хорошо проработанный интерфейс R (вот ссылки на github https://github.com/neuhausi/canvasXpress и на репозитории CRAN https://cran.r-project.org/web/packages/canvasXpress/ index.html ) и возможность использовать объекты ggplot в качестве входных данных для визуализации данных (рис. 2). Кроме того, CanvasXpress также имеет зрелый интерфейс для Python (вот ссылка на Pypi https://pypi.org/project/canvasxpress), что позволяет очень легко реализовать описанную парадигму end-to-end. Цель этой публикации не в том, чтобы предоставить подробную информацию о инженерной реализации, а в том, чтобы отстаивать эту практику при подаче исследовательских работ в рецензируемые журналы для продвижения науки и содействия воспроизводимости исследований.