اذهب إلى المحتوى

السؤال

نشر (معدل)

كيف يمكنني تغيير حجم ال bins، على سبيل المثال في الكود التالي:

from matplotlib.ticker import PercentFormatter
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import colors
N_points = 200
n_bins = 15
x1 = abs(np.random.randn(N_points)*50)
plt.hist(x1,bins = n_bins)
plt.xlabel("X-axis")
plt.ylabel("y-axis")
plt.show()

index.png.a0498c8dc16d99de2b5fbd319dcd286d.png
 

تم التعديل في بواسطة Ali Ismael

Recommended Posts

  • 1
نشر

يمكنك تعديل حجمها من خلال ضبطهم بشكل يدوي، بدلاً من تمرير عدد ال bins،  كالتالي:

from matplotlib.ticker import PercentFormatter
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import colors
N_points = 50
# تحديد نطاق المجالات يدوياً
bins=[0, 50, 70, 90,255] # وبالتالي سيكون لدينا 4 مجالات وأكبرها حجماً هو المجال من 90 ل 255
x1 = abs(np.random.randn(N_points)*50)
plt.hist(x1,bins = bins)
plt.xlabel("X-axis")
plt.ylabel("y-axis")
plt.show()

وإذا كنت ترغب فقط في توزيعها بالتساوي (جعل النطاقات متساوية):

from matplotlib.ticker import PercentFormatter
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import colors
N_points = 50
x1 = abs(np.random.randn(N_points)*50)
# في حالة كانت بياناتك تحوي أعداد حقيقية استخدم:
bins=np.arange(min(x1), max(x1) + binwidth, binwidth)
# أما في حالة كانت أعداد صحيحية فقط يمكنك استخدام:
# bins=range(min(x1), max(x1) + binwidth, binwidth)
plt.hist(x1,bins = bins)
plt.xlabel("X-axis")
plt.ylabel("y-axis")
plt.show()
  • 1
نشر

يمكنك اما تغيير حجم ال bins بطريقة يدوية عن طريق وضع list يكون فيها ال bins التي تريد رسمها كالتالي:


import matplotlib.pyplot as plt
import numpy as np

N_points = 50
#حجم ال bins
bins_list =[0, 10, 20, 30,40] 
x1 = abs(np.random.randn(N_points)*50)
plt.hist(x1,bins = bins_list )
plt.xlabel("X-axis")
plt.ylabel("y-axis")
plt.show()

وتظهر كالتالي:

6170540eebaf3_Figure2021-10-20193810.png.34c0a1893f773dc7135edd233db5fcb1.png

أو عن طريق جلب أكبر قيمة وأصغر قيمة ثم طرحهما وقسمة الناتج على عدد ال bins التي تريدها وبالتالي يكون لدينا أحجام bins متساوية كالتالي:


import matplotlib.pyplot as plt
import numpy as np
import math
N_points = 50
x1 = abs(np.random.randn(N_points)*50)
#خلق bins ذات حجم 5
w = 5
n = math.ceil((x1.max() - x1.min())/w)
ax = plt.hist(x1, bins = n)
plt.xlabel("X-axis")
plt.ylabel("y-axis")
plt.show()

وتظهر كالتالي:

617053d74001a_Figure2021-10-20193614.png.b8cbf35430c0b57189c7616a182fb43a.png

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...