我试图在存在磁场(由永磁体产生)的情况下进行等离子体的数值计算。我使用streamplot命令绘制了数据中的磁场:
现在,我想沿着场线手动创建一个网格,我需要用于绘制它们的点的坐标。这对我来说很重要,因为等离子体将沿着场线流动或穿过场线,我希望代码开发变得更容易。
我试图分析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
据我所知,我可以通过数字积分场数据找到流函数,然后用它来绘制和存储流线的坐标,但这将是麻烦的。
请引导我选择更方便的选择。
答案 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,:]