python find_nearest_contour已弃用,现在怎么办?

t1rydlwq  于 2023-10-15  发布在  Python
关注(0)|答案(1)|浏览(112)

我正在使用Matplotlib contours来探索2DMap。我使用contour.find_nearest_contour来获得通过x0, y0附近的轮廓的x和y的范围,如下所示:

cs = fig.gca().contour(x, y, image, [level])

cont, seg, idx, xm, ym, d2 = cs.find_nearest_contour(x0, y0, pixel=False)

min_x = cs.allsegs[cont][seg][:, 0].min()
max_x = cs.allsegs[cont][seg][:, 0].max()
min_y = cs.allsegs[cont][seg][:, 1].min()
max_y = cs.allsegs[cont][seg][:, 1].max()

搜索,seg,idx,xm,ym,d2 = cs.find_nearest_contour(x0,y0,pixel=False)
现在Matplotlib v3.8抛出了一个MatplotlibDeprecationWarning,但我找不到任何文档解释如何获得相同的功能。
请注意,一个给定的等高线级别可以创建多个段,我还需要哪一段更接近我的点。实际上,我需要在我的代码行中使用seg。这不是从私有方法_find_nearest_contour共享的,这是一个非常好的替代候选者。

ozxc1zmp

ozxc1zmp1#

  • 继续使用.find_nearest_contour,直到它被删除。
  • 根据matplotlib issue 27070中的注解,私有方法._find_nearest_contour可以被使用,直到或者如果公共方法被重新实现。
  • 它被弃用是因为旧的返回值...对于ContourSets的新内部表示形式没有多大意义(只有一个集合,每个级别只有一个路径)
  • 如果您有现有的代码,您可能需要执行以下操作之一:
  • 继续使用matplotlib低于3.8
  • 使用最新的实现并根据新的Returns更新代码
  • 给出示例代码:
  • CS.find_nearest_contour(0, 0)(5, 0, 296, 209.70308429471964, 168.30113207547168, 72300.65462060366)
  • CS._find_nearest_contour((0, 0))(5, 296, array([209.70308429, 168.30113208]))
import matplotlib.pyplot as plt
import numpy as np

delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2

# Basic contour plot
fig, ax = plt.subplots(figsize=(7, 7))
CS = ax.contour(X, Y, Z)

CS._find_nearest_contour((0, 0))  # private method

Signature: CS._find_nearest_contour(xy, indices=None)
Docstring:
Find the point in the unfilled contour plot that is closest (in screen
space) to point *xy*.

Parameters
----------
xy : tuple[float, float]
    The reference point (in screen space).
indices : list of int or None, default: None
    Indices of contour levels to consider.  If None (the default), all levels
    are considered.

Returns
-------
idx_level_min : int
    The index of the contour level closest to *xy*.
idx_vtx_min : int
    The index of the `.Path` segment closest to *xy* (at that level).
proj : (float, float)
    The point in the contour plot closest to *xy*.
File:      c:\users\trenton\anaconda3\envs\py312\lib\site-packages\matplotlib\contour.py
Type:      method

关于私有方法

相关问题