تغيير حجم مربع الشكل ليناسب الأسطورة الموسعة
عند نقل وسيلة الإيضاح خارج المحور في Matplotlib، هناك تحدي حيث تتم مواجهة وسيلة الإيضاح قد يتم قطعها بواسطة مربع الشكل. تحدث هذه المشكلة عند توسيع وسيلة الإيضاح خارج حدود منطقة الرسم. تقليديًا، كان ضبط المحور لاستيعاب وسيلة الإيضاح الأكبر هو الحل الموصى به، ولكنه قد يؤدي إلى تقليل حجم البيانات، مما يزيد من صعوبة تفسيرها.
تغيير الحجم الديناميكي لمربع الشكل
لمعالجة هذه المشكلة، الحل المقترح هو تغيير حجم مربع الشكل ديناميكيًا لاستيعاب وسيلة الإيضاح الموسعة دون تغيير حجم البيانات. تمت ملاحظة هذا السلوك في R و LaTeX ولكنه لم يكن واضحًا على الفور في Python.
كود تغيير حجم الشكل ديناميكيًا
الكود المقترح لإنجاز تغيير الحجم الديناميكي هذا هو كما يلي يتبع:
fig.savefig('samplefigure', bbox_extra_artists=(lgd,), bbox_inches='tight')
في هذا الكود، يمثل lgd كائن وسيلة الإيضاح. من خلال تحديد bbox_extra_artists=(lgd,)، نسمح لـ savefig بضبط مربع الشكل ديناميكيًا ليناسب وسيلة الإيضاح.
مثال على الأسطورة المعقدة
هنا مثال مع وسيلة إيضاح معقدة:
import matplotlib.pyplot as plt
import numpy as np
# Create figure and subplot
fig = plt.figure(1)
ax = fig.add_subplot(111)
# Plot data and create legend
ax.plot(x, np.sin(x), label='Sine')
ax.plot(x, np.cos(x), label='Cosine')
ax.plot(x, np.arctan(x), label='Inverse tan')
lgd = ax.legend(loc='upper center', bbox_to_anchor=(0.5,-0.1))
# Add arbitrary text for testing
text = ax.text(-0.2,1.05, "Aribitrary text", transform=ax.transAxes)
# Set title and grid
ax.set_title("Trigonometry")
ax.grid('on')
# Save figure with dynamic resizing
fig.savefig('samplefigure', bbox_extra_artists=(lgd,text), bbox_inches='tight')
يُنشئ هذا الرمز مؤامرة ذات وسيلة إيضاح معقدة تمتد إلى ما وراء منطقة المحور. تقوم المعلمة bbox_extra_artists بضبط مربع الشكل لاستيعاب وسيلة الإيضاح، مما يؤدي إلى عرض وسيلة الإيضاح بأكملها.
ملاحظة:
منذ عام 2019، أصبح رمز التغيير الديناميكي مبسط. الأمر التالي يكفي الآن:plt.savefig('x.png', bbox_inches='tight')
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3