Jupyter中Matplotlib直方图显示异常求助:自定义X轴区间分组
解决Jupyter中直方图X轴显示错误的问题
嘿,我来帮你搞定这个直方图的小问题!
你遇到的核心问题有两个:一是X轴显示成了行索引而非实际订阅天数,二是没有按你想要的100、200…1200区间分组。我来一步步给你解释怎么修正:
问题原因分析
你当前用df[['subscription_days']]获取数据,这会返回一个二维的DataFrame对象,matplotlib在处理二维数据时,误把行索引当成了X轴的取值,而不是实际的订阅天数数值。另外,你没有指定分组区间,matplotlib会自动生成默认的bins,不符合你的需求。
修正后的代码
import matplotlib.pyplot as plt plt.figure(figsize=(20, 10)) plt.xlabel('Subscription Days') plt.ylabel('Frequency') plt.title('Distribution of Subscription Days') # 改用Series获取一维数据,避免索引混淆 x = df['subscription_days'] # 设置分组区间:从0到1200,每100为一个间隔,刚好覆盖你的数据范围 plt.hist(x, bins=range(0, 1300, 100), edgecolor='black') plt.grid(True) # 手动设置X轴刻度,和分组区间完全对应 plt.xticks(range(0, 1300, 100)) plt.show()
关键改动说明
- 改用
df['subscription_days']:这个写法返回的是一维的Series,直接对应订阅天数的数值,matplotlib会正确把这些值作为直方图的X轴数据,不会再显示行索引。 - 指定
bins参数:range(0, 1300, 100)生成了0-100、100-200……1100-1200的分组区间,完美覆盖你的数据最小值1和最大值1188,完全符合你想要的分组需求。 - 优化显示细节:
edgecolor='black'让直方图的柱子边界更清晰,plt.xticks()确保X轴刻度和分组区间一一对应,看起来更直观。
内容的提问来源于stack exchange,提问作者omid feroz
相关产品推荐
相关产品推荐

