matplotlib zorder من العناصر في مؤامرة قطبية متراكبة على مؤامرة ديكارتية

StackOverflow https://stackoverflow.com//questions/22019789

سؤال

أواجه صعوبة في التحكم في ترتيب عناصر المخطط القطبي المتراكب على المخطط الديكارتي.

خذ بعين الاعتبار هذا المثال:

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 من المؤامرات المتناثرة.أتوقع أن يكون النجم الأحمر فوق النجم الأزرق.

هل يمكن أن توضح ما أفعله خطأ هنا؟

وجدت سؤال واحد, ، وهو مشابه إلى حد ما لخطتي، ولكنه يتعلق بخطوط التجزئة والشبكات بدلاً من ذلك.ربما هو نفس الخطأ؟

ملاحظة.أنا أقوم بتشغيل Linux x86_64 مع Python 2.7.6 وmatplotlib 1.3.1.

هل كانت مفيدة؟

المحلول

تكمن المشكلة في أنك تقوم بتعيين الترتيب z للعلامات على محاور مختلفة ax و ax2 لكن منذ 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