不,matplotlib没有办法做到这一点.您应该使用默认位置,或者使用手动和使用鼠标进行完全交互.
您可能希望将此文件作为上游错误报告提交,以便他们可以改进其算法.
有多种方法可以解决这个问题.第一个是以编程方式在轮廓图上放置文本.您将无法以这种方式可靠地删除文本下方的行.假设您有一个轮廓c,您可以在c.collections中找到轮廓线.对于每个轮廓线,调用get_paths并将文本放在该路径上.
另一种选择是替换手动放置的代码(在matplotlib.contour.BlockingContourLabeler中)或调整找到标签位置的代码(在matplotlib.contour.locate_label中),但两个函数都非常密集.如果你能找到一个有效的locate_label替代品,只需覆盖绘图宏中的旧方法
def your_locate_label(self, linecontour, labelwidth):
# some magic
pass
ar = np.array([[1,0], [0,1]]
c = matplotlib.contour(ar)
c.locate_label = your_locate_label
c.clabel()
顺便说一句,如果您使用ipython,您可以轻松地从交互式会话中查看功能源
%psource c.clabel
或者直接在文件中调用你的$EDITOR
%edit c.clabel