Mat*_*lon 17 python matplotlib contour
我想在等高线图上控制matplotlib clabels的位置,但不使用clabel中的manual = True标志.例如,我想指定一个x坐标,并在通过该行的点处创建标签.我看到你可以使用get_position()来获取各个标签的位置,但我仍然坚持这一点.任何帮助将不胜感激.谢谢!
kef*_*ich 15
是的,现在有办法控制标签位置! https://github.com/matplotlib/matplotlib/pull/642
plt.figure()
CS = plt.contour(X, Y, Z)
manual_locations = [(-1, -1.4), (-0.62, -0.7), (-2, 0.5), (1.7, 1.2), (2.0, 1.4), (2.4, 1.7)]
plt.clabel(CS, inline=1, fontsize=10, manual=manual_locations)
Run Code Online (Sandbox Code Playgroud)
不,matplotlib没有办法做到这一点.您应该使用默认位置,或者使用手动和使用鼠标进行完全交互.
您可能希望将此文件作为上游错误报告提交,以便他们可以改进其算法.
有多种方法可以解决这个问题.第一个是以编程方式在轮廓图上放置文本.您将无法以这种方式可靠地删除文本下方的行.假设你有一个轮廓,c你可以找到轮廓线c.collections.对于每个轮廓线,调用get_paths并将文本放在该路径上.
另一种选择是替换手动放置的代码(in matplotlib.contour.BlockingContourLabeler)或调整找到标签位置(in 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()
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果您使用,ipython您可以轻松地从交互式会话中查看功能源
%psource c.clabel
Run Code Online (Sandbox Code Playgroud)
或者直接调用你$EDITOR在文件中定义的
%edit c.clabel
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10877 次 |
| 最近记录: |