我在控制叠加在笛卡尔图上的极坐标图元素的zorder时遇到了困难。

考虑这个例子:

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(1, 1, marker='*', s=2000, c='r', zorder=2)
ax2 = fig.add_axes(ax.get_position(), frameon=False, polar=True)
ax2.scatter(1., 0.1, marker='*', s=1000, c='b', zorder=1)
plt.xlim(0, 2)
plt.ylim(0, 2)
plt.show()

结果是:enter image description here

它看起来像 matplotlib 忽略了 zorder 散点图。我希望红星在蓝星之上。

你能解释一下我在这里做错了什么吗?

我发现 一个问题, ,这有点类似于我的,但涉及刻度线和网格。也许是同一个bug?

附:我正在使用Python2.7.6和matplotlib1.3.1运行Linux x86_64。

有帮助吗?

解决方案

问题是您正在设置不同轴上的标记的z顺序 axax2 但从那以后 ax2 有一个更大的z阶,所有的图将在上面 ax.一个解决方案可能是设置一个更高的z阶 ax 但随后你需要使背景透明或设置 frameon=False (这可能不适合你的情况),这是我所说的一个示范:

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

ax.scatter(1, 1, marker='*', s=2000, c='r', zorder=2)

ax2 = fig.add_axes(ax.get_position(), frameon=False, polar=True)
ax2.scatter(1., 0.1, marker='*', s=1000, c='b', zorder=1)

ax.set_zorder(3)
ax.patch.set_facecolor('none')
#ax.patch.set_visible(False)

plt.xlim(0, 2)
plt.ylim(0, 2)
plt.show()

情节:

enter image description here

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top