如何将Matplotlib等高线标签设置为图角图例而非沿轮廓线标注
等高线替换为角落图例的实现方案
直接移除原代码里的内嵌标签调用逻辑,将等高线对象传入图例接口即可实现,不需要额外构造自定义图例句柄。
修改后的可运行代码如下:
import numpy as np import matplotlib.pyplot as plt delta = 0.15 x = np.arange(1.5, 2.5, delta) y = np.arange(1.0, 3.0, delta) X, Y = np.meshgrid(x, y) Z = np.exp(X - Y) # 绘制等高线 CS1 = plt.contour(X, Y, Z) # 移除原有的clabel内嵌标注代码,替换为图例生成 plt.legend( handles=CS1.collections, labels=[str(round(level, 2)) for level in CS1.levels], # 这里可以自定义每个图例项的显示文字 loc="upper right", # 控制图例位置,可按需修改为左上、左下、右下等方位 title="等高线对应Z值" ) plt.title('matplotlib.pyplot.contour() 图例示例') plt.show()
可选调整项
- 自定义图例文字:直接修改
labels参数传入的字符串列表即可,和你之前给内嵌标签自定义文本的逻辑完全一致 - 调整图例位置:修改
loc参数即可,常用取值有upper left(左上)、lower left(左下)、lower right(右下);如果怕图例遮挡绘图内容,可以加参数bbox_to_anchor=(1.02, 1)把图例放到绘图区域外侧 - 适配填充等高线:如果你后续用
contourf绘制填充等高线,这套方法同样适用,把返回的等高线集合对象传入handles参数即可
内容的提问来源于stack exchange,提问作者ZeroTwo
相关产品推荐
相关产品推荐

