Matplot lib中每个坐标的线图

时间:2018-11-18 14:55:00

标签: python pandas matplotlib annotate

我正在尝试绘制连接开始(x,y)和结束(x,y)的线 这意味着将有一条线将(x1start,y1start)连接到(x1end,y1end) 我在数据框中有多行。 复制实际数据帧的示例数据帧如下所示:

df = pd.DataFrame()
df ['Xstart'] = [1,2,3,4,5]
df ['Xend'] = [6,8,9,10,12]
df ['Ystart'] = [0,1,2,3,4]
df ['Yend'] = [6,8,9,10,12]

因此,如果我们看一下df的第一行,则一行将(1,0)连接到(6,6) 为此,我使用for循环为每一行绘制一条线,如下所示:

  fig,ax = plt.subplots()
fig.set_size_inches(7,5)

for i in range (len(df)):
    ax.plot((df.iloc[i]['Xstart'],df.iloc[i]['Xend']),(df.iloc[i]['Ystart'],df.iloc[i]['Yend']))
    ax.annotate("",xy = (df.iloc[i]['Xstart'],df.iloc[i]['Xend']),
    xycoords = 'data',
    xytext = (df.iloc[i]['Ystart'],df.iloc[i]['Yend']),
    textcoords = 'data',
    arrowprops = dict(arrowstyle = "->", connectionstyle = 'arc3', color = 'blue'))

plt.show()

运行此命令时,我收到以下错误消息。

我得到如下图:

enter image description here

箭头和线在预期的位置。箭头应位于每条线的终点。

有人可以告知这里发生了什么吗?

谢谢

Zep

3 个答案:

答案 0 :(得分:1)

您正在混淆箭头的位置。 s.append("[ "); // there is a space after the left bracket for (i = 0; i < 5; ++i) { s.appendF("\"%d\",", i); // always add comma } s.back() = ']'; // modify last comma (or the space) to right bracket xy中的每个坐标对都包含一个x和y值。

此外,为了查看图中的箭头,您需要手动设置图的限制,因为出于充分的理由,在缩放数据限制时未考虑注释。

xytext

enter image description here

答案 1 :(得分:1)

如果要绘制线段,可以使用以下代码。您可能需要箭头或某种db元素(注意正确的拼写),但是您的目标似乎是绘制线段,这可以完成:

annotate

答案 2 :(得分:0)

不是100%肯定,但是我认为在第二行中,您需要将xy =后的部分设为一个元组,因为否则,它将在前面的部分设置为关键字参数,并尝试将在该部分之后的部分作为普通arg < / p>