LINUX.ORG.RU

Графики: Gnuplot'а не хватает...


0

0

Помогите с проблемой.

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

1. Кто чем пользуется для такого?


2. Я набросал предварительный список того, что хотелось бы:
* вышеописанное
* кроссплатформенность (Linux/Win32)
* экспорт в ps и растровую графику
* экспорт в LaTeX
* свой язык скриптов и/или интеграция с Tcl/Python/Perl

Что-нибудь этим требованиям удовлетворяет?


MatLab - Рисует хорошо, кросс-платформенный, экспортирует в кучу форматов, включая EPS но стоит больших денег, если покупать.

Matplotlib - закос под матлаб на питоне, рисует хорошо, даже красиво (antialiasing) но умеет только 2D.

Есть ещё Ch (http://www.softintegration.com/) вроде все умеет и есть бесплатная версия (не знаю на сколько урезанная - никогда не пользовался).

ROOT (http://root.cern.ch/) вроде тоже все умеет (никогда не пользовался)

buddha
()

http://pyx.sourceforge.net/ - мощная рисовалка на чистом Питоне.

А фортраноподобная императивщина типа матлаба и его клонов должна таки околеть и сдохнуть в аццком быдлореакторе.

ero-sennin ★★
()
Ответ на: комментарий от buddha

> MatLab - Рисует хорошо, кросс-платформенный, экспортирует в кучу форматов, включая EPS но стоит больших денег, если покупать.

есть еще SciLab - http://www.scilab.org/ AFAIU он в какой-то степени понимает файло от MatLab-а. лично сам с ним не работал, но очевидцы говорят, что пакет вполне на уровне, i.e. есть смысл попробовать.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от ero-sennin

> А фортраноподобная императивщина типа матлаба и его клонов должна таки околеть и сдохнуть в аццком быдлореакторе.

забавно. все-таки жаль, что ум, культура и умение считать столь редко сочетаются в одном человеке. большинство ограничивается последним :-/

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

Неужели Вы фортранист? :) И вы действительно думаете, что для построения графиков императивный стиль подходит лучше, чем декларативный?

ero-sennin ★★
()
Ответ на: комментарий от ero-sennin

> А фортраноподобная императивщина типа матлаба и его клонов должна таки околеть и сдохнуть в аццком быдлореакторе.

:) В матлабе очень много хороших DSL-ей. Один только Simulink чего стоит. Охота на ведьм это хорошо, но с "быдлореактором" ты немного перестарался.

Burbaka ★★
()
Ответ на: комментарий от ero-sennin

Matlab:
x = -pi:.1:pi
plot(x, sin(x), "r")
xlabel("x axis")
ylabel("y axis")
title("sin(x)")

Mathematica:
Plot[Sin[x], {x, -Pi,Pi},
    PlotLabel->"Sin(x)",
    AxesLabel->{"x axis", "y axis"},
    PlotStyle->Red]

Почему в матлабе для изменений свойств графика используются
глобальные функции xlabel, title и т. д.? Нафига создаются
глобальные объекты типа gca и gcf и соответствующие функции
типа cla и clf? Да и названия для них выбраны в лучших фортра-
новских традициях, так что без словаря не разобраться. Короче,
когда я дочитал до этого места в хелпе, я полчаса бился головой
о клавиатуру в истерике от такой клоунады, а потом пошёл и снёс
это горе луковое к чертям свинячьим. %~0

ero-sennin ★★
()
Ответ на: комментарий от ero-sennin

И? На матлабе выглядит проще :) По крайней мере не надо запоминать много лищних идентификаторов.

По мне так DSL для описания графика функции - это ковыряние в комариных жопках. Все равно, на практике никому кроме воинствующих эстетстов это нафик не надо.

Burbaka ★★
()
Ответ на: комментарий от Burbaka

Ох, Луговского на вас нет! :) Пойду лучше с девушкой погуляю.

ero-sennin ★★
()
Ответ на: комментарий от Burbaka

Вы, дорогой, сути не улавливаете. Матлаб не асилил ФП и за это достоин служить украшением биореактора. Функциональный (декларативный) стиль происходит от классической математической нотации, а императивный - от устройства современных микропроцессоров. Я просто беру любую формулу из любого журнала и без изменений загоняю её в любой функциональный язык - хоть в Хаскель, хоть в Математику. А любители матлаба будут иметь жоский половой секс со своими for и while, и почему-то мне их ничуть не жаль. Каждый др@чит как он хочет.

anonymous
()
Ответ на: комментарий от anonymous

Позиция ясна. С дураками - максималистами не спорю. Закодировался.

Burbaka ★★
()

кстати, можно сюда добавить Asymptote (http://asymptote.sourceforge.net/)

ePiX (http://www.tug.org/TUGboat/Articles/tb25-2/tb81hwang.pdf)

посмотрите, что вам больше нравится.

P.S. поскольку дискуссия намечается жаркая, было бы лучше если бы вы написали конкретнее ваши задачи, тогда, возможно, советы будут более продуктивные.

buddha
()
Ответ на: комментарий от ero-sennin

>Почему в матлабе для изменений свойств графика используются >глобальные функции xlabel, title и т. д.?

В Матлабе, это не свойства графика (lineseries) ето свойства осей (axes). В комманду plot можно передавать axes для отрисовки.

buddha
()
Ответ на: комментарий от buddha

> В Матлабе, это не свойства графика (lineseries) ето свойства осей (axes).

угу что в Матлаб'е существует отдельно график и отдельно оси - это ваще песня сивой кобылы млин но всй равно суть ясна дузрья

> В комманду plot можно передавать axes для отрисовки.

можно пример?

anonymous
()
Ответ на: комментарий от anonymous

anonymous (*) (17.08.2006 15:48:54):

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

Второе:

> Функциональный (декларативный) стиль происходит от классической математической нотации, а императивный - от устройства современных микропроцессоров.

Просто бред.

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

Третье:

В этом топике обсуждение императивщины vs. функциональщины вне контекста конкретных программ -- offtopic.

Die-Hard ★★★★★
()

2eliterr:

Mathematica.

Конечно, дорогая, но почти везде есть (в России -- ворованная, как правило).

Die-Hard ★★★★★
()
Ответ на: комментарий от anonymous

> Я просто беру любую формулу из любого журнала и без изменений загоняю её в любой функциональный язык - хоть в Хаскель, хоть в Математику.

MatCad в руки и в бой. AFAIU его возможностей вам должно вполне хватить.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

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

anonymous
()
Ответ на: комментарий от buddha

Спасибо откликнувшимся.
После беглого осмотра:

ROOT - побаиваюсь я его. Он очень большой и на C++ :)
Matlab - денег нет, хотя я и не для личного использования ищу. И не будет...
Mathematica - то же самое :(
Ch - графики в бесплатной версии нет

Остальное буду ещё смотреть.


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

С чёрно-белыми графиками меня вполне удовлетворяет gnuplot, но он в решении конкретно этой задачи не поможет...

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

При этом меня не очень привлекают системы библиотек C++, т.к. скорость выполнения - это хорошо, но мне нужно несколько небольших программ, и поэтому удобство важнее.

Для простых рисованных иллюстраций я, видимо остановлюсь на одном из трёх - pgf, asymptote или MetaPost. Пока не определился окончательно, буду сравнивать на конкретных рисунках.

eliterr
() автор топика
Ответ на: комментарий от eliterr

А не хочешь строить графики вручную через pycairo?

smartly ★★★
()
Ответ на: комментарий от Valeriy_Onuchin

Matplotlib я пробовал, клон матлаба один к одному. Ещё и тормозной. Хотя рисует неплохо.

ero-sennin ★★
()

Мирно отдыхает в сторонке не гнуплот а твой учитель чтения. Ищи в доке "pm3d" и всё, что связано с палитрами. У этого режима правда вывод только в постскрипте и на экранные терминалы (x11).

sS ★★★★★
()
Ответ на: комментарий от sS

> Мирно отдыхает в сторонке не гнуплот а твой учитель чтения. Ищи в доке "pm3d" и всё, что связано с палитрами. У этого режима правда вывод только в постскрипте и на экранные терминалы (x11).

sS, конечно, я про pm3d читал. К сожалению, здесь отдыхает именно Gnuplot, т.к. мне нужны графики двумерные, и с моими RGB-цветами, в то время как:
> pm3d is an splot style for drawing palette-mapped 3d and 4d data as color/gray maps and surfaces

Ключевые слова - splot, palette, 3d, 4d, maps, surface.

Ну и так, к сведению. В Gnuplot 4.0pl0 pm3d работает на:
PostScript
pslatex, pstex, epslatex
gif, png, jpeg
(x)fig
tgif
cgm
pdf
svg

eliterr
() автор топика
Ответ на: комментарий от eliterr

>я про pm3d читал
Сейчас там же читай про палитры. Или у тебя цвета такие что терминал изобразить
не в состоянии ? ;)

>т.к. мне нужны графики двумерные, и с моими RGB-цветами

Ну дык разверни график так, чтобы твои поверхности были бы обращены к тебе "срезом"

Голову включи блин ;)
или  заклинило на том что plot=2D а splot=3D ?

На держи пример прямо из демки вырезанный и как надо повёрнутый

set surface
set format z
set palette
set title "color lines: 'splot sin(y)/(y) with linespoints palette'"
set ticslevel 0
set border 4095
set xrange [-10:10]; set yrange [-10:10]
set hidden3d
set isosamples 40,40; set samples 40,40
set view 90,90
splot sin(y)/(y) w lp palette


>Ну и так, к сведению. В Gnuplot 4.0pl0 pm3d работает на:
PostScript
pslatex, pstex, epslatex
gif, png, jpeg
(x)fig
tgif
cgm
pdf
svg

Ну я по старой памяти пишу ... виш добавили еще терминалов по ходу.
Я года 2 назад как раз делал то что ты описываешь.

Именно для 2D графиков.

sS ★★★★★
()
Ответ на: комментарий от sS

> Ну дык разверни график так, чтобы твои поверхности были бы обращены к тебе "срезом"

Как-то упустил из виду, что 3D может отображаться как 2D :)
Спасибо за наводку.

eliterr
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.