2012-06-19 3 views
0

У меня есть файл точек (x, y), которые я рисую с использованием gnuplot. Если у меня есть другой файл, который показывает, какая точка связана с какой-либо другой точкой ребра (например, (3.8, 6), связанная с (4,7)), можно ли визуализировать/построить эти ребра между точками?Графические точки, связанные с ребрами с использованием gnuplot

ответ

3

В зависимости от того, как организованы ваши данные, вы можете посмотреть в график with vectors. Например, если ваш файл данных выглядит следующим образом:

#x1 y1 x2 y2 
1 1 3 3 

Вы можете построить это с помощью:

set style arrow 1 nohead 
plot "my_arrows.dat" using 1:2:($3-$1):($4-$2) with vectors arrowstyle 1 

EDIT

Предполагая, что все точки в вашем файле данных повторяются, вы можете сделать следующие:

set style arrow 1 nohead 
plot "my_arrows.dat" using 1:2:($3-$1):($4-$2) with vectors arrowstyle 1,\ 
    "my_arrows.dat" using 1:2 w points 

Если они не повторяется, вы можете сделать:

set style arrow 1 nohead 
plot "my_arrows.dat" using 1:2:($3-$1):($4-$2) with vectors arrowstyle 1,\ 
    "my_arrows.dat" using 1:2 w points ls 1 lc rgb "red" pt 1,\ 
    "my_arrows.dat" using 3:4 w points ls 1 lc rgb "red" pt 1 

Обратите внимание, что вы можете играть вокруг с (linecolor стилями линий или lc, pointtype или pt, linewidth или lw и т.д., чтобы сделать пункты выглядят одинаково.)

+0

Это потрясающе, поэтому мне просто нужно переставить мой файл со стрелками, чтобы следовать этому формату (x1 y1 x2 y2). Единственная проблема заключается только в том, что точки не видны при соединении со стрелкой. Что я должен добавить к вашей команде, чтобы точки были видны? – shn

+0

Смотрите мое обновленное сообщение. Надеюсь, я правильно понимаю ваш вопрос. – mgilson

+0

используя 4 точки в my_arrows.dat «2 6 4 9» и «4 7 3 5», я получаю следующее (я пробовал вашу последнюю команду), которая кажется неправильной: http://img15.hostingpics.net/pics/639362lllolz .png – shn

2

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

set arrow [X] from first x1,y1 to first x2,y2 nohead 

, где X представляет собой необязательный тег число для стрелки и (x1, y1) и (x2, y2) - точки в системе координат графа.

+0

Во-первых, возможно ли иметь неориентированную стрелу? во-вторых, у меня есть файл, который говорит для каждой точки, с которой связана другая точка. Должен ли я таким образом генерировать соответствующий файл a, который будет содержать команду «set arrow ..» для каждой ассоциации (это то, что вы назвали «plotscript»)? – shn

+0

Хорошо, для первого вопроса я вижу, что я могу добавить «nohead» в конце, чтобы иметь неориентированную стрелку. Теперь, чтобы сгенерировать скрипт, который должен связывать каждую точку с некоторыми другими, какой сценарий я должен сгенерировать (я буду генерировать его с помощью python), это просто последовательность команд «установить стрелку из Xi, Yi в первый Xj, Yj nohead "? – shn

+0

Вы правы, я забыл сначала добавить опцию «nohead». Сплотскрипт - это просто файл, который содержит команды, которые вы в противном случае вводили бы в gnuplot. Вы можете использовать его, набрав 'gnuplot plotscript.plt' в командной строке (расширение файла не имеет значения), или вы можете ввести' load plotscript.plt' изнутри gnuplot. Вы также правы в отношении файла, который хотите сгенерировать, содержащих команды - всего лишь набор команд 'set arrow ...'. – andyras

Смежные вопросы