python - يختبئ محور النص في المؤامرات matplotlib




(4)

إذا كنت تريد إخفاء نص المحور فقط مع الحفاظ على خطوط الشبكة:

frame1 = plt.gca()
frame1.axes.xaxis.set_ticklabels([])
frame1.axes.yaxis.set_ticklabels([])

سيؤدي القيام set_visible(False) أو set_ticks([]) أيضاً إلى إخفاء خطوط الشبكة.

أحاول رسم صورة بدون علامات أو أرقام على أي من المحاور (أستخدم المحاور بالمعنى التقليدي ، وليس تسمية matplotlib!). المشكلة التي صادفتها هي حيث تقوم matplotlib بضبط علامات tick (x) (y) عن طريق طرح قيمة N ، ثم تضيف N في نهاية المحور.

قد يكون هذا الأمر غامضًا ، ولكن المثال المبسط التالي يسلط الضوء على المشكلة ، حيث أن "6.18" هي القيمة المخالفة لـ N:

import matplotlib.pyplot as plt
import random
prefix = 6.18

rx = [prefix+(0.001*random.random()) for i in arange(100)]
ry = [prefix+(0.001*random.random()) for i in arange(100)]
plt.plot(rx,ry,'ko')

frame1 = plt.gca()
for xlabel_i in frame1.axes.get_xticklabels():
    xlabel_i.set_visible(False)
    xlabel_i.set_fontsize(0.0)
for xlabel_i in frame1.axes.get_yticklabels():
    xlabel_i.set_fontsize(0.0)
    xlabel_i.set_visible(False)
for tick in frame1.axes.get_xticklines():
    tick.set_visible(False)
for tick in frame1.axes.get_yticklines():
    tick.set_visible(False)

plt.show()

الأشياء الثلاثة التي أود معرفتها هي:

  1. كيفية إيقاف تشغيل هذا السلوك في المقام الأول (على الرغم من أنه في معظم الحالات يكون مفيدًا ، فهو ليس دائمًا!) نظرت عبر matplotlib.axis.XAxis ولا يمكن العثور على أي شيء مناسب

  2. كيف يمكنني جعل N تختفي (أي X.set_visible(False) )

  3. هل هناك طريقة أفضل للقيام بالأعمال المذكورة أعلاه على أي حال؟ ستكون مؤامرتي النهائية عبارة عن حبكات فرعية 4 × 4 في الشكل ، إذا كان ذلك مناسبًا.


إذا كنت مثلي ولا تقوم دائمًا باسترجاع المحاور ، ax ، عند التخطيط للرسم ، عندها سيكون الحل البسيط

plt.xticks([])
plt.yticks([])

لم أتمكن في الواقع من عرض صورة بدون حدود أو بيانات محور استنادًا إلى أي من مقتطفات الشفرة هنا (حتى تلك المقبولة في الإجابة). بعد الحفر من خلال بعض وثائق واجهة برمجة التطبيقات ، هبطت على هذا الرمز لتقديم صورتي

plt.axis('off')
plt.tick_params(axis='both', left='off', top='off', right='off', bottom='off', labelleft='off', labeltop='off', labelright='off', labelbottom='off')
plt.savefig('foo.png', dpi=100, bbox_inches='tight', pad_inches=0.0)

لقد استخدمت استدعاء tick_params لإغلاق أي معلومات إضافية قد يتم تقديمها ولدي رسم بياني مثالي في ملف الإخراج الخاص بي :). أتمنى أن يساعدك هذا!


نوعًا ما من خيط قديم ، ولكن يبدو أن هذه طريقة أسرع باستخدام أحدث إصدار من matplotlib:

ضبط المنسق الرئيسي للمحور السيني

ax.xaxis.set_major_formatter(plt.NullFormatter())




plot