在图的顶层绘制圆圈

时间:2017-01-13 15:39:58

标签: python matplotlib

我正在研究一个图形,我试图在组合色彩图和等高线图上绘制一个圆圈。圆圈不断在轮廓下绘制而不是在它们之上(见下图)。我已经尝试重新排序我如何调用imshow,contour和Circle来查看我是否可以将圆圈显示在顶部,但我没有运气。有没有办法迫使Circle成为最高级别的人物?谢谢你的帮助!

Colormap with contour plot and added circle

2 个答案:

答案 0 :(得分:4)

使用zorder kwarg。这可以控制哪些元素相互叠加。因此,在这种情况下,您希望增加圆的zorder。您可能需要尝试查找能够提供所需结果的zorder,但规则是较高zorder个对象会显示在较低zorder个对象的顶部。

很难确切地知道没有任何代码,但假设您使用了pcolormeshcontourCircle补丁,此示例显示了未设置{的效果{1}}(白色圆圈),并设置zorder(红色圆圈)。

zorder=10

请注意,白色圆圈位于黑色轮廓线下方,但通过将import numpy as np import matplotlib.pyplot as plt from matplotlib.patches import Circle # Fake data x = np.arange(100) y = np.arange(100) X, Y = np.meshgrid(x, y) z = X**0.5 * Y**0.5 fig, ax = plt.subplots(1) ax.set_aspect('equal') ax.pcolormesh(X, Y, z, cmap='viridis') ax.contour(X, Y, z, colors='k', linewidths=3) circ1 = Circle((65, 65), 30, facecolor='None', edgecolor='w', lw=5) circ2 = Circle((35, 35), 30, facecolor='None', edgecolor='r', lw=5, zorder=10) ax.add_patch(circ1) ax.add_patch(circ2) plt.show() 增加到10,红色圆圈位于轮廓线的顶部。

enter image description here

答案 1 :(得分:0)

您可以设置绘图对象的zorder属性,以强制它位于同一axes内的其他绘图之上。较高的zorder值会显示在较低的zorder值之上。

plt.plot([1, 2], [1, 2], zorder=100)

默认情况下,修补程序的zorder为1,2D行对象的zorder为2,文本的zorder为3.