python - tutorial - matplotlib شرح




كيف يمكنك تغيير حجم الأرقام المرسومة مع matplotlib؟ (9)

كيف يمكنك تغيير حجم الشكل المرسوم مع matplotlib؟


ملاحظة الإيقاف:
وفقا لدليل Matplotlib الرسمي ، لم يعد من المستحسن استخدام وحدة pylab . يرجى النظر في استخدام وحدة matplotlib.pyplot بدلاً من ذلك ، كما هو موضح في هذه الإجابة الأخرى .

يبدو أن العمل التالي:

from pylab import rcParams
rcParams['figure.figsize'] = 5, 10

هذا يجعل عرض الرقم 5 بوصات ، وارتفاعه 10 بوصات .

ثم تستخدم فئة الشكل هذا كقيمة افتراضية لواحدة من الوسيطات الخاصة بها.


باستخدام plt.rcParams

هناك أيضًا هذا الحل البديل إذا كنت تريد تغيير الحجم دون استخدام بيئة الشكل. لذلك في حالة استخدام plt.plot() على سبيل المثال.

import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (20,3)

هذا مفيد جدًا عند رسم خط مضمن (على سبيل المثال مع IPython Notebook).

التحويل إلى سم

figsize tuple على البوصة ، لذلك إذا كنت تريد ضبطها في سنتيمترات ، عليك أن تقسمها بـ 2.54 انظر إلى هذا السؤال .


إذا كنت قد حصلت بالفعل على الرقم الذي تم إنشاؤه ، يمكنك القيام بذلك بسرعة:

fig = matplotlib.pyplot.gcf()
fig.set_size_inches(18.5, 10.5)
fig.savefig('test2png.png', dpi=100)

لنشر حجم التغيير إلى نافذة واجهة المستخدم الرسومية الحالية إضافة forward=True

fig.set_size_inches(18.5, 10.5, forward=True)

بما أن Matplotlib غير قادر على استخدام النظام المتري أصلاً ، إذا كنت تريد تحديد حجم الشكل الخاص بك بوحدة طولية معقولة مثل السنتيمتر ، فيمكنك القيام بما يلي (رمز من gns-ank ):

def cm2inch(*tupl):
    inch = 2.54
    if isinstance(tupl[0], tuple):
        return tuple(i/inch for i in tupl[0])
    else:
        return tuple(i/inch for i in tupl)

ثم يمكنك استخدام:

plt.figure(figsize=cm2inch(21, 29.7))

في حال كنت تبحث عن طريقة لتغيير حجم الشكل في Pandas ، يمكنك القيام على سبيل المثال:

df['some_column'].plot(figsize=(10, 5))

حيث df هو patas dataframe. إذا كنت ترغب في تغيير الإعدادات الافتراضية ، فيمكنك القيام بما يلي:

import matplotlib

matplotlib.rc('figure', figsize=(10, 5))

لزيادة حجم الرقم N عدد المرات التي تحتاج إلى إدراج هذا قبل pl.show ():

N = 2
params = pl.gcf()
plSize = params.get_size_inches()
params.set_size_inches( (plSize[0]*N, plSize[1]*N) )

كما أنه يعمل بشكل جيد مع دفتر ipython.


يرجى تجربة رمز بسيط على النحو التالي:

from matplotlib import pyplot as plt
plt.figure(figsize=(1,1))
x = [1,2,3]
plt.plot(x, x)
plt.show()

تحتاج إلى ضبط حجم الرقم قبل أن تخطط.


يقوم هذا بتغيير حجم الشكل على الفور حتى بعد رسم الشكل (على الأقل باستخدام Qt4Agg / TkAgg - ولكن ليس MacOSX - مع matplotlib 1.4.0):

matplotlib.pyplot.get_current_fig_manager().resize(width_px, height_px)

figure يخبرك توقيع المكالمة:

figure(num=None, figsize=(8, 6), dpi=80, facecolor='w', edgecolor='k')

لذلك ، يقوم figure(figsize=(1,1)) بإنشاء صورة بوصة بالبوصة ، والتي ستكون 80 بكسل × 80 بكسل إلا إذا قمت أيضًا بإعطاء وسيطة dpi مختلفة.





visualization