我正在尝试绘制连接开始(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()
运行此命令时,我收到以下错误消息。
我得到如下图:
箭头和线在预期的位置。箭头应位于每条线的终点。
有人可以告知这里发生了什么吗?
谢谢
Zep
答案 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
答案 1 :(得分:1)
如果要绘制线段,可以使用以下代码。您可能需要箭头或某种db
元素(注意正确的拼写),但是您的目标似乎是绘制线段,这可以完成:
annotate
答案 2 :(得分:0)
不是100%肯定,但是我认为在第二行中,您需要将xy =后的部分设为一个元组,因为否则,它将在前面的部分设置为关键字参数,并尝试将在该部分之后的部分作为普通arg < / p>