0

我正在尝试制作设施位置问题算法,并且我得到了一个可能的解决方案,但不知道如何绘制它,现在我尝试通过供应中心和供应点之间的每条绑定线使用不同的层。例如,制作这两条线使用 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))

我得到一个错误。问候

4

2 回答 2

0

在您指定的示例中,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),但也可以是任何其他点。您需要自己准备和交错数据 (xy)。

另一种方法是使用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(查看 Gallery->Geometries)

于 2019-10-28T07:58:06.207 回答
0

另请参阅Geom.segment,它类似于Geom.vector但没有箭头,并且不需要显式比例。

于 2019-10-29T11:43:44.277 回答