如何获取等高线图绘制的线的 (x,y) 值?

发布于 2024-08-07 19:39:18 字数 223 浏览 11 评论 0原文

有没有一种简单的方法来获取像这样绘制的等高线的 (x,y) 值:

import matplotlib.pyplot as plt
x = [1,2,3,4]
y = [1,2,3,4]
m = [[15,14,13,12],[14,12,10,8],[13,10,7,4],[12,8,4,0]]
cs = plt.contour(x,y,m, [9.5])
plt.show()

Is there an easy way to get the (x,y) values of a contour line that was plotted like this:

import matplotlib.pyplot as plt
x = [1,2,3,4]
y = [1,2,3,4]
m = [[15,14,13,12],[14,12,10,8],[13,10,7,4],[12,8,4,0]]
cs = plt.contour(x,y,m, [9.5])
plt.show()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ゞ花落谁相伴 2024-08-14 19:39:18

查看返回的 ContourSet 的集合属性。特别是第一个集合的 get_paths() 方法返回组成每个线段的配对点。

cs.collections[0].get_paths()

要获取坐标的 NumPy 数组,请使用 Path.vertices 属性。

p1 = cs.collections[0].get_paths()[0]  # grab the 1st path
coor_p1 = p1.vertices

Look at the collections property of the returned ContourSet. In particular the get_paths() method of the first collection returns paired points making up each line segment.

cs.collections[0].get_paths()

To get a NumPy array of the coordinates, use the Path.vertices attribute.

p1 = cs.collections[0].get_paths()[0]  # grab the 1st path
coor_p1 = p1.vertices
橘虞初梦 2024-08-14 19:39:18

遍历集合并提取路径和顶点并不是最直接或最快的事情。返回的 Contour 对象实际上通过 cs.allsegs 具有线段的属性,它返回形状 [level][element][vertex_coord] 的嵌套列表:

num_levels = len(cs.allsegs)
num_element = len(cs.allsegs[0])  # in level 0
num_vertices = len(cs.allsegs[0][0])  # of element 0, in level 0
num_coord = len(cs.allsegs[0][0][0])  # of vertex 0, in element 0, in level 0

因此,所有路径的顶点可以提取为:

cs.allsegs[i][j]  # for element j, in level i

参见参考:
https://matplotlib.org/3.1.1/api/contour_api.html

Going through the collections and extracting the paths and vertices is not the most straight forward or fastest thing to do. The returned Contour object actually has attributes for the segments via cs.allsegs, which returns a nested list of shape [level][element][vertex_coord]:

num_levels = len(cs.allsegs)
num_element = len(cs.allsegs[0])  # in level 0
num_vertices = len(cs.allsegs[0][0])  # of element 0, in level 0
num_coord = len(cs.allsegs[0][0][0])  # of vertex 0, in element 0, in level 0

Hence the vertices of an all paths can be extracted as:

cs.allsegs[i][j]  # for element j, in level i

See reference:
https://matplotlib.org/3.1.1/api/contour_api.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文