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

تغيير حجم النطاقات bins في Matblotlib في بايثون

Ali Ismael

السؤال

كيف يمكنني تغيير حجم ال 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...