Как сделать линии с Юлией, используя Gadfly (проблема с расположением объекта)? - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь создать алгоритм задачи определения местоположения объекта, и я получил возможное решение, но не знаю, как его отобразить, теперь я пытаюсь использовать разные слои по каждой линии привязки между центром поставки и предоставленной точкой. Например,, чтобы сделать эти две линии, я использую 2 разных слоя с двумя разными векторами: точка снабжения [1,1] и точки снабжения [5,2] и [2,6], например:

using Gadfly
plot(layer(x=[1,5], y=[1,2],Geom.point, Geom.path),layer(x=[1,2], y=[1,6],Geom.point, Geom.path))

Но моя проблема в том, что мне нужно сделать так, чтобы сотни линий были одинаковыми, с множеством точек снабжения и снабжения, поэтому я не считаю правильным делать слой связыванием. Итак, при попытке сделать что-то вроде:

x=[1,2],[3,4]
y=[3,4],[2,4]
plot(layer(x[:], y[:],Geom.point, Geom.path))

я получаю сообщение об ошибке. Привет

Ответы [ 2 ]

0 голосов
/ 29 октября 2019

См. Также Geom.segment , который похож на Geom.vector, но без стрелки и не требует явных масштабов.

0 голосов
/ 28 октября 2019

В вашем примере вы назначили x=[1,2],[3,4], который создает кортеж массивов , и Gadfly не знает, как с этим справиться.

Вам нужно будет предоставить массивы с именамиПараметры для построения:

xc = [0,1,0,-1,0,4,0,-2,0,-2]
yc = [0,3,0,-2,0,1,0,2,0,-2]
plot(x=xc, y=yc, Geom.path, Geom.point)

Важной частью, если вы используете Geom.path, является возвращение в центр снабжения, который в моем примере является точкой (0,0), но может быть любой другой. Вам нужно будет самостоятельно подготовить и перемежать данные (x и y).

Другим способом будет использование Geom.vector:

# coordinate system and scales are necessary for Geom.vector
coord = Coord.cartesian(xmin=-5, xmax=5, ymin=-5, ymax=5)
xsc  = Scale.x_continuous(minvalue=-5, maxvalue=5)
ysc  = Scale.y_continuous(minvalue=-5, maxvalue=5)

# prepare the points you want to show
xend = [1,-1,4,-2,-2]
yend = [3,-2,1,2,-2]

# create the supplying center (1,2)
x = fill(1,length(xend))
y = fill(2,length(yend))

#plot everything
plot(x=x,y=y,xend=xend,yend=yend,xsc,ysc,Geom.vector,coord)

Полезная документацияна Gadfly: http://gadflyjl.org/stable/index.html (взгляните на Галерея-> Геометрия)

...