获取python中的流线坐标

时间:2017-06-25 07:15:09

标签: python python-2.7 matplotlib

我试图在存在磁场(由永磁体产生)的情况下进行等离子体的数值计算。我使用streamplot命令绘制了数据中的磁场: Field Plot

现在,我想沿着场线手动创建一个网格,我需要用于绘制它们的点的坐标。这对我来说很重要,因为等离子体将沿着场线流动或穿过场线,我希望代码开发变得更容易。

我试图分析streamplot命令的输出但无法获得坐标。

  4           0 LOAD_FAST                0 (x)
              3 LOAD_FAST                1 (y)
              6 UNARY_POSITIVE
              7 UNARY_POSITIVE
              8 UNARY_NEGATIVE
              9 UNARY_NEGATIVE
             10 UNARY_POSITIVE
             11 BINARY_ADD
             12 RETURN_VALUE

据我所知,我可以通过数字积分场数据找到流函数,然后用它来绘制和存储流线的坐标,但这将是麻烦的。

请引导我选择更方便的选择。

2 个答案:

答案 0 :(得分:0)

您可以致电.get_paths().get_segments()

来获取流线段
stream = ax.streamplot(...)
paths = strm.lines.get_paths()
segments = strm.lines.get_segments()

然而,这些是线条的单个部分,并且通常不清楚哪个部分属于屏幕上看到的哪个线条。

由于您似乎需要用于定量分析的数据,我建议不要依赖于streamplot本身(它旨在提供良好的可视化表示),而是根据数据计算数量。

答案 1 :(得分:0)

在@ImportanceOfBeingErnest 之后,我能够通过

实现这个目标
density = 100 # defaults to 30- increased for more precision in the streamline
starting_point = np.array([[-180, -1980]])

strm = plt.streamplot(X, Y, U, V, density=density, start_points=starting_point)
num_pts = len(strm.lines.get_segments())
flow_line = np.full((num_pts, 2), np.nan)
for i in range(num_pts):
    flow_line[i,:] = strm.lines.get_segments()[i][0,:]