سؤال

هل هناك طريقة لتغيير حجم الرقم تلقائيا للأراضي الواردة بشكل صحيح في صورة matplotlib / pylab؟

أقوم بإنشاء مؤامرات HeatMap (SUB) تختلف في نسبة العرض إلى الارتفاع وفقا للبيانات المستخدمة.

أدرك أنني أستطيع حساب نسبة العرض إلى الارتفاع ووضعها يدويا، ولكن بالتأكيد هناك طريقة أسهل؟

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

المحلول

يستخدم bbox_inches = 'ضيق'

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

X = 10*np.random.rand(5,3)

fig = plt.figure(figsize=(15,5),facecolor='w') 
ax = fig.add_subplot(111)
ax.imshow(X, cmap=cm.jet)

plt.savefig("image.png",bbox_inches='tight',dpi=100)

... يعمل فقط عند حفظ الصور على الرغم من عدم إظهارها.

نصائح أخرى

ما عليك سوى استخدام الجانب = "Auto" عند استدعاء Imshow

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

X = 10*np.random.rand(5,3)
plt.imshow(X, aspect='auto')

إنه يعمل حتى لو كان ذلك فقط للعرض وليس الادخار

طريقة أخرى للقيام بذلك يستخدم وظيفة Matplotlib Tight_layout

import matplotlib.pyplot as plt
fig,(ax) = plt.subplots(figsize=(8,4), ncols=1)
data = [0,1,2,3,4]
ax.plot(data)
fig.tight_layout()
fig.show()

هل تعني تغيير حجم الصورة أو المنطقة التي يمكن زخرفة داخل المؤامرة؟

يمكن ضبط حجم الرقم مع الشكل.set_figsize_inches.وبعد أيضا Scipy Cookbook. لديه إدخال على تغيير حجم الصورة الذي يحتوي على قسم حول صور متعددة لكل شخصية.

أيضا إلقاء نظرة على هذا سؤال.

يمكنك محاولة استخدام المحور ("Scaled")

import matplotlib.pyplot as plt
import numpy

#some dummy images
img1 = numpy.array([[.1,.2],[.3,.4]]) 
img2 = numpy.array([[.1,.2],[.3,.4]])

fig,ax = plt.subplots()
ax.imshow(img1,extent=[0,1,0,1])
ax.imshow(img2,extent=[2,3,0,1])
ax.axis('scaled') #this line fits your images to screen 
plt.show()

ممكن أيضا للاستخدام ax.autoscale. مع كائن الفأس

ax.autoscale(enable=True) 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top