我很难控制叠加在笛卡尔图上的极坐标元素的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()
结果是:
看起来matplotlib
忽略了散点图的zorder
。我希望这颗红星能够位于蓝色之上。
请你解释我在这里做错了什么?
我找到了one question,这与我的相似,但关注的是滴答线和网格。也许这是同一个错误?
P.S。我正在使用Python 2.7.6和matplotlib 1.3.1运行Linux x86_64。
答案 0 :(得分:2)
问题是你要设置不同轴ax
和ax2
上的标记的z顺序,但由于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()
简介: