LINUX.ORG.RU
ФорумTalks

В чём проще рисовать такое?


0

0

Есть набор координат в некоей системе отсчёта.

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

Ну, скажем, отметить несколько центров и зоны их влияния по разным критериям.

Понятно, что такое и тупо в Питоне напрограммировать в каком-нить cairo несложно, но нет ли готового простого решения?

★★★★★
Ответ на: комментарий от Gary

Мне проще на Питоне :)

...

Сейчас ковыряюсь с gnuplot, но, во-первых, так и не понял, как рисовать примитивы, типа окружностей, да ещё в произвольной системе отсчёта, без ручного пересчёта координат, в документации в упор не нахожу, во-вторых, примеры с полупрозрачностью, что на офсайте у меня не работают - вываливаются с ошибками на «transparent».

KRoN73 ★★★★★
() автор топика

>нарисует красивую картинку с точками в указанных координатах заданного >радиуса и вокруг этих точек нарисует большие полупрозрачные(!) >пересекающиеся окружности тоже, соответственно, заданных (больших) >радиусов

такое легче всего рисовать мозгами под ЛСД

gear ★★★
()

а вообще OpenGL же!

gear ★★★
()

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

Можно конечно в каких нибудь математических пакетах нарисовать, но с прозрачностью сомневаюсь что получится.

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

Судя по всему, он на до фига всего способен. Вопрос только насколько в нём всё это делать просто. И не проще ли в итоге сделать в Питоне, чем осваивать Gnuplot :) Пока разбираюсь. Есть подозрение, что полупрозначность появилась недавно и, хотя в доке она есть, в релизе её ещё нет. Ставлю 4.4.0rc1 сейчас, погляжу.

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

Упс. Уже не смущает. Я протормозил и вместо 4.4.0rc1 сейчас собирается 4.5CVS :) Тогда, наверное, точно должно быть... Если соберётся.

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

Да, в 4.5 - заработало. Пошёл разбираться с его системой координат. И с окружностями.

KRoN73 ★★★★★
() автор топика
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
  \coordinate (O) at (0, 0);
  \coordinate (A) at ($ (O) +(90:2cm) $);
  \coordinate (B) at ($ (O) +(210:2cm) $);
  \coordinate (C) at ($ (O) +(330:2cm) $);
  \filldraw[nearly opaque,fill=red] (A) circle (3cm);
  \filldraw[semitransparent,fill=green] (B) circle (3cm);
  \filldraw[nearly transparent,fill=blue] (C) circle (3cm);
\end{tikzpicture}
\end{document}

http://omploader.org/vM2gwag

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

> gnuplot

:-)

и вокруг этих точек нарисует большие полупрозрачные(!)

пересекающиеся окружности тоже, соответственно, заданных (больших)


радиусов.



Это попытка изобразить диаграммы Венна?

Sphinx ★★☆☆
()

Языков описания изображений много, gnuplot из них подходит менее всего. Метапост, asymptote, pic, tikz — есть из чего выбрать.

Sphinx ★★☆☆
()

Просто сгенерить svg-шки. Потом convert + mencoder, получаешь .avi.

Davidov ★★★★
()

Да рисуй питоном же, фигле (:

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

>всюду фигурирует терминал pngcairo, а у меня такого в списке терминалов нет

а если с поддержкой wxGTK gnuplot собрать?

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

>Судя по всему, он на до фига всего способен. Вопрос только насколько в нём всё это делать просто. И не проще ли в итоге сделать в Питоне, чем осваивать Gnuplot :) Пока разбираюсь. Есть подозрение, что полупрозначность появилась недавно и, хотя в доке она есть, в релизе её ещё нет. Ставлю 4.4.0rc1 сейчас, погляжу.

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

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

Я бы как советовали сделал бы svg, но скормил бы их инкскейпу, или там inkview, в зависимости от ситуации.

Профит в том что не надо читать мануалы, можно просто нарисовать что нужно и глянуть в получившийся svg :):):) Если непонятно - правим нужное свойство в inkscape и делаем diff :)

соответственно для правки величин скрипт с каким нибудь темплейт
процессором, или набор print с подстановкой величин. Тебе же все равно нужен скрипт для генерации gnuplot cкоманд, верно? А тут и на bash все будет удобно.

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

>Я бы как советовали сделал бы svg

svg, боюсь, не умеет кушать данные из внешних файлов. Да и синтаксис, мягко говоря, у него не human readable :)

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

> svg, боюсь, не умеет кушать данные из внешних файлов.

Не вам в помощь будет сказано, я б такое не советовал, но вы немного не правы. В качестве proof of the concept можно сделать

my_coords.xml+my_stype.xsl=my_picture.svg

))

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

>svg, боюсь, не умеет кушать данные из внешних файлов.

дык JavaScript

Да и синтаксис, мягко говоря, у него не human readable

дык фрейморки(хотя я обхожусь без них)

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

> svg, боюсь, не умеет кушать данные из внешних файлов.

Ты не понял идеи. Писать на чем хочешь чтобы *генерить* svg из твоих данных. Так тебе пришлось всеравно ведь написать некий псевдокод на на gnuplot'е. А тут у тебя из люого желаемого языка используется чтение/печать и все.

Да и синтаксис, мягко говоря, у него не human readable :)


У тебя похоже совсем другой подход к решению задач чем у меня.

Не нужно понимать досконально, не нужно генерить с нуля. Нужно нарисовать 2 кружка с прозрачностью в inkscape, посмотреть что будет. Кусок svg кода отвечающего за кружок вырезать и вставить в print в программу из пары строк на любом языке. Профит в том что в отличие от gnuplot ты а) используешь «любимый»/любой язык, б) не читаешь долго доки по gnuplot который все равно рассчитан не на то что тебе надо.
Собственно зачем учть десять языков описания графики, когда и одного, которого не надо учить :), достаточно.

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

Ты не понял идеи. Писать на чем хочешь чтобы *генерить* svg из твоих данных

Тогда я SVG могу генерить из gnuplot ;)

Так тебе пришлось всеравно ведь написать некий псевдокод на на gnuplot'е

Нет. Прямо написал - для каждой точки из файла, при расположении x/y/размер в таком-то порядке рисовать окружность, координаты x,y, радиус - формула от размера. Полупрозрачность и цвет заданные и т.п. :)

Типа:

set terminal pngcairo enhanced font "Tahoma,8" size 1280, 1280
set output 'areas.png'

set xtics 5
set ytics 5
set grid

set xrange [-40:70]
set yrange [50:-60]

plot "solo.dat" using 3:4:(5) with circles lc rgb "#a0a0a0" fs transparent solid 0.05 noborder notitle

Собственно зачем учть десять языков описания графики

Я в прошлом году пытался к gnuplot подступиться и не смог именно из-за того, что я к нему, из-за наворотов, подходил как к _хитрому_ языку. А он оказался крайне прост :) Его недостаток ещё в малом количестве простых примеров в демо. Как только понял, что я всё сильно усложняю, сразу стало просто и понятно.

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

>Так SVG тоже очень прост

Я ковырял его. Ничего подобного :D XML не может быть «очень прост» хотя бы потому, что не рассчитан на человека :)

Так что фишки, типа http://balancer.ru/lor/topics/4529032/reports/users-ograph.svg я рисую через ряд промежуточных слоёв ;)

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