python - 散布上的箭头

标签 python python-2.7 csv matplotlib

由于我自己运气不好,我正在寻求一些帮助来解决我遇到的这个问题。

我有这种格式的 CSV 数据。

Flow Amount,X_Start,Y_Start,X_End,Y_End
4,36.20740741,31.97407407,48.103125,9.4125
4,50.71851852,48.46666667,65.65714286,73.81785714
3,50.71851852,48.46666667,48.103125,9.4125
3,48.103125,9.4125,62.14642857,22.55357143
2,31.976,71.308,40.19210526,88.43157895
1,56.98888889,48.18333333,36.20740741,31.97407407
1,56.98888889,48.18333333,50.71851852,48.46666667
0,46.65686275,72.46470588,48.103125,9.4125
0,65.65714286,73.81785714,12.18333333,55.78333333

我希望在散点图上绘制一个箭头,从 (X_Start, Y_Start) 点到 (X_End, Y_End) 点,并在终点处有一个箭头。

我还想根据第 1 列 [Flow] 更改箭头的粗细,显示的线越粗,数字越大。

我已经创建了一个包含除箭头之外的所有内容的绘图,并且我希望实现的箭头效果与屏幕截图中的效果非常相似。

enter image description here

我研究了 plt.quiver() 但这只需要 1 分,因此我正在寻找一种有效的解决方法,在循环 CSV 数据时将这些箭头添加到我的绘图中。

如果有任何解决方案的想法,我将不胜感激。

最佳答案

您可以使用“箭头”来绘制箭头,如下所示:

import numpy as np
from matplotlib import pyplot as plt

data = np.genfromtxt('file1.dat', delimiter=',', skip_header=1, names=['MAG', 'X0', 'Y0','X1','Y1'])
plt.scatter(data['X0'], data['Y0'], color='r', zorder=10)
plt.scatter(data['X1'], data['Y1'], color='r', zorder=10)

for d in data:
    if(d['MAG'] > 0):
        plt.arrow(d['X0'],d['Y0'],d['X1']-d['X0'], d['Y1']-d['Y0'], 
         shape='full', color='b', lw=d['MAG']/2., length_includes_head=True, 
         zorder=0, head_length=3., head_width=1.5)

plt.show()

enter image description here

您必须使用FancyArrow的另一种方式,如下所示:

for d in data:
    if(d['MAG'] > 0):
        ar = patches.FancyArrow(d['X0'],d['Y0'],d['X1']-d['X0'], d['Y1']-d['Y0'], width=d['MAG']/4.,
         head_width=3., head_length=1.54, length_includes_head=True, zorder = 0) 
        plt.gca().add_patch(ar)

关于python - 散布上的箭头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37711936/

相关文章:

python - 打印 Python 函数参数的名称和值

api - 使用 Postman 在 Symfony 中通过 API 接收 CSV

python - 将 CSV 列转换为列表

python - 返回列表的多个元素

python - 评估 Python 中的所有嵌套生成器

python - 最多 'o' 个字符的单词

python 如何通过与变量名匹配的模式对列表进行排序

PHP,如何将我的 CSV 文件插入我的数据库

python - python中如何不自动将byte转换为ascii

Python 字典没有分配所有的键或项