我有一组细分线 ab. 。观点 一个 位于 [x0,y0] = [0.0] 协调为径向点。 b 是段线的结尾 [x1,y1]. 。我找到了一些答案 这里 我试图适应我的问题。

问题: 如何绘制径向段显示B是箭头的末端。因为,在我的代码箭头中,确实超出了绘图窗口。

任何帮助将不胜感激。

import numpy as np
import pylab as pl

def arrow_segment(AB):

    for idx in range(0,len(AB)):
            plt.arrow(AB[idx,0],  #x1
                  AB[idx,1],  # y1
                  AB[idx,2]-AB[idx,0], # x2 - x1
                  AB[idx,3]-AB[idx,1], # y2 - y1
                  color='blue',head_width=0.05, head_length=0.1)
    plt.show()
AB = [[0, 0., 1., 10]]
arrow_segment(AB)
有帮助吗?

解决方案

我的理解是,当箭头不在图中时,您要问该怎么办。有一些选择:

  1. 您可以将箭头绘制到边界上,并使用一种箭头头,表明它不是箭头的真实端,例如半箭头头, "shape"="left", ,或开放与关闭,等等。
  2. 您可以沿着箭头中途绘制箭头,就像是为了简化的。我不知道MPL中的命令,但是您可以使用两个箭头轻松地进行操作,或者只是绘制一条线和箭头的头,等等。

编辑:为了完整,我会添加我的#2。这是我绘制线路,然后将箭头绘制在线上,可以在沿线的任何地方绘制箭头 f (在0到1之间)。该示例显示了为 f0.1.

import numpy as np
import pylab as plt

def arrow_mh(v4, color, f=.5):
    x0, y0, x1, y1 = v4
    line = plt.plot([x0, x1], [y0, y1], color=color)

    f = max(f, .0001)
    dx = f*(x1-x0)
    dy = f*(y1-y0)
    a = plt.arrow(x0, y0, dx, dy,
          color=color,head_width=0.05, head_length=0.1)

def arrow_segment(AB):

    for idx in range(0,len(AB)):
        arrow_mh(AB[idx], 'blue', .01*(9-idx))
    plt.xlim(0, 1)
    plt.ylim(0, 1)
    plt.show()
AB = np.array([[.1*i, .1, .5, 4] for i in range(10)])
arrow_segment(AB)

enter image description here

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top