使用Matplotlib绘制直方图后如何增大bin宽度的技术咨询
Matplotlib直方图增大bin宽度解决方案
pandas内置的hist绘图方法中,bins参数控制直方图的分箱数量,在数据取值区间固定的前提下,分箱数量越少,单个bin的宽度就越大。你当前代码设置的是bins=50,要增大bin宽度直接调小该参数即可,下面提供两种实现方案:
方案1:直接调整分箱数量(最简单)
直接修改hist方法中的bins参数值,数值越小bin越宽,可根据显示效果灵活调整,修改后完整代码如下:
import matplotlib.pyplot as plt import pandas as pd fig, axes = plt.subplots(nrows=1, ncols=3, sharex=False, sharey=False) # 把原来的bins=50改成更小的数值,示例为20,可自行调整 df_russel_fee.hist(column='fee', by='fiscal_year',xlabelsize=10,bins=20,ax=axes) plt.suptitle('Russel fee histogram', x=0.5, y=0.99, ha='center', fontsize='xx-large') fig.text(0.5, 0.04, 'value', ha='center',fontsize='xx-large') fig.text(0, 0.5, 'frequency', va='center', rotation='vertical',fontsize='xx-large') fig.set_size_inches(15,6) plt.show()
注:原代码里的
figsize=(0,0)参数无效,后续set_size_inches已经覆盖了画布尺寸设置,可以直接删除。
方案2:精准控制固定bin宽度
如果需要指定每个bin的固定宽度,可以先计算自定义分箱边界再传入参数:
import matplotlib.pyplot as plt import pandas as pd import numpy as np # 按需设置你想要的单个bin宽度,示例为10 bin_width = 10 min_val = df_russel_fee['fee'].min() max_val = df_russel_fee['fee'].max() # 生成自定义分箱区间 custom_bins = np.arange(min_val, max_val + bin_width, bin_width) fig, axes = plt.subplots(nrows=1, ncols=3, sharex=False, sharey=False) df_russel_fee.hist(column='fee', by='fiscal_year',xlabelsize=10,bins=custom_bins,ax=axes) plt.suptitle('Russel fee histogram', x=0.5, y=0.99, ha='center', fontsize='xx-large') fig.text(0.5, 0.04, 'value', ha='center',fontsize='xx-large') fig.text(0, 0.5, 'frequency', va='center', rotation='vertical',fontsize='xx-large') fig.set_size_inches(15,6) plt.show()
内容的提问来源于stack exchange,提问作者Sujeet maurya
相关产品推荐
相关产品推荐

