Pull to refresh

Comments 26

«Значение 100х100 и так очень большое»… и это в 2020 году?
Ну просто вот на моём компе это ощутимо подтормаживает. Как понимаю, трёхмерные графики там считаются на процессоре, а не на видеокарте, поэтому всё медленно и плохо.

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

Не знаю, у меня переваривал совершенно безумное количество данных. Говорю, 30 гигов точек. Опять же, свет клином на нём не сошёлся. А библиотека js?
Не знаю, у меня переваривал совершенно безумное количество данных. Говорю, 30 гигов точек.

Может, я что-то делал не так. На миллионах у гнуплота график строился за 10-15 минут, в charts — за десяток секунд.


А библиотека js?

Нет, она для хаскеля.

Для тех, кто думает использовать gnuplot или нет, могу порекомендовать сперва глянуть на Matplotlib. По моим ощущениям, его использовать намного легче, чем gnuplot.
gnuplot можно везде использовать (dos, anrdoid и т.п.). От того большая гибкость. Ну и на сложных графиках я бы поспорил кто будет проще.
Плюс gnuplot не требует погружения в язык программирования.
Как пользователь и того и того, могу с уверенностью сказать что гнуплот на голову превосходит матплотлиб. Чего стоят одни 3х мерные графики в матплотлибе и их документированность(как пример задаться вопросом какие значения принимает аргумент projection за ислючением «3d» в… а вот я не знаю даже как описать все эти методы где оно всплывает и кроме как пары примеров нету описания). После нескольких лет использования матплотлиба для научной визуализации могу много и долго ругаться на него. Особенно поражают примеры встречаемые почти везде, в духе хэллоу ворлд и потом рассказов какая же замечательная либа, а попробуйте начать картинку кастомизировать — начинаются свистопляски. А большие объемы данных приводят к подвисаниям(5к строк на 300 столбцов и отрисовка 3д картинки — хана всему.).
Вот, кстати, интересно: библиотеки визуализации типа ggplot2/matplotlib при больших объемах данных тормозят. Как у gnuplot с этим?
У меня gnuplot построение делал живее чем matplotlib, c ggplot2 особо не работал, но подозреваю что будет не хуже.

Да из тьма разных: красивый и гибкий Матплотлиб (+ надстройки типа seaborn); красивый и интерактивный plotly (обёртка на d3.js); быстрый vispy (с GPU, когда прям дофигища точек); специфический, но невероятно удобный после привыкания ggplot (вообще это R, но уже вроде что-то очень похожее и в питоне запилили) — и это ещё без платных пакетов типа Математики (там тоже графическая система крутая).


Если уж прям откровенно, то и в Экселе можно неплохие графики делать (не хорошие, но и не ужасные), но после пользования инструментами типа pandas (или экосистемой R) возвращаться к GUI и "мышатничеству" совсем не хочется.

Недавно чуть мозг не сломал. Хотел отобразить на двух осях (x, x2) две серии решений уравнения. Примерно так:

set xtics pi/2
set x2tics -9/5*pi,pi/3 # здесь нет метки в 0, так как левая граница не кратна шагу
plot sin(x)


Так на двух осях 0 не совпадает! Решение такое:

set link x2

Ещё при экспорте в терминалы с поддержкой LaTeX можно использовать LaTeX-формулы в легендах, на осях и в подписях. В итоге текст, цифры и формулы на графиках получаются такими же, как и во всем тексте. Это выглядит очень профессионально.
Ещё при экспорте в терминалы с поддержкой LaTeX можно использовать LaTeX-формулы в легендах, на осях и в подписях. В итоге текст, цифры и формулы на графиках получаются такими же, как и во всем тексте. Это выглядит очень профессионально.


Могли бы привести рабочий пример, пожалуйста?
Огромное спасибо. Погоняю.
Спасибо за отличную и интересную статью!

Поделюсь своим опытом: я использовал R и R Studio для похожей работы — анализ данных, отрисовка графики и экспорт в PDF.

Схема примерно такая: данные собираются или напрямую с серверов, или через Prometheus, и складываются в БД sqlite. Оттуда их берет скрипт на R, обрабатывает данные, делает прогнозы, рисует страницы, разметку, графики и экспортирует в PDF.

Пример отчета тут (сорри за звездочки — NDA):
R export example



Плюсы R\R Studio по сравнению с gnuplot:
  • Сбор, анализ, вычисления, графика, экспорт — все в одной среде, не выходя из IDE
  • R — полноценный (хоть и специализированный) язык программирования. Для визуализации данных доступны условные операторы, циклы, переменные и т.д.
  • Полный набор инструментов и функций для работы со статистикой — не даром корни R происходят от S — проприетарной среды для работй со статистическими данными
  • Куча дополнительных пакетов — профессиональные палитры, новые источники данных, поддержка разных форматов графики, и т.д.
  • Можно делать разметку страницы — делить ее на секции, делать титульные листы, таблицы и т.д.
  • Можно использовать пакет gnuplot — тогда график будет рисовать именно он, а не сам R. Использовал его для особо изящных и сложных 3D-графиков


Минусы:
  • Полноценный язык программирования и IDE — придется потратить время на изучение новых концепций и вещей
  • Рисование графиков часто превращается в отладку программу. Хорошо хоть иснструменты отладки прямо в IDE есть :)
  • Не все графики можно нарисовать встроенными функциями — тут на помощь приходит интеграция с gnuplot :)
Долго переходил на ggplot2 — сейчас же редко использую что-то другое для визуализации.

Так, понимаю, вы в R использовали один из пакетов (ggplot2 или lattice), а не базовую графику? Ваш комментарий можно доработать до полноценной статьи, кстати )

Я ggplot2 использовал только для пары графиков, которые стандартными средствами не смог сделать.

На скрине выше только последняя таблица была сгенерирована с помощью стороннего пакета, всё остальное — с помощью базовой графики.

Спасибо, была такая мысль написать статью :)
Ох, класс, спасибо за вводную статью. Вчера провел увлекательнейший вечер с ноутбуком на животе, радовался как ребенок. Это целый мир, который можно изучать бесконечно.

А можно ли изменить направление осей, чтобы значения росли сверху вниз и справа налево?

Например, есть данные

x	y
2018	301
1844	514
1107	695
544	820

и нужно, чтобы точка 2018;301 отображалась слева вверху, а точка 544;820 справа внизу.

Не нашёл как этого добиться (кроме как сделать исходные значения отрицательными, но тогда придётся потом открывать готовый график в графическом редакторе и затирать минусы у чисел).

Хорошо бы хотя бы на листочке нарисовать что требуется, чтобы можно было понять как это сделать. Кстати, на стековерфлоу очень хорошо помогают по гнуплоту, когда у меня затык там помогают вполне годно.

Требуется следующее:

Это диаграмма гласных.

Получена, как описал выше: сделал в исходных данных все координаты отрицательными, сгенерировал gnuplot'ом картинку, открыл в графическом редакторе и стёр минусы у чисел. Хотелось бы подобное делать без таких костылей.

Сходу не нагуглил решения, грязный хак — это именовать значение по осям как удобно, но я уверен что это возможно.
set xrange [2500:0]
set yrange [800:200]

Чтобы были автоматически правильно расставлены пределы не знаю как сделать, но могу посоветовать делать два прохода и использовать GPVAL_DATA_X_MAX и подобные переменные окружения, как посоветовали тут
https://stackoverflow.com/questions/13580236/gnuplot-max-and-min-values-in-a-range#13583689

Only those users with full accounts are able to leave comments. Log in, please.