You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整df.hist生成的直方图X轴刻度,使标签居中对齐柱体

解决pandas hist直方图X轴刻度居中对齐柱体的问题

要让X轴刻度(如1、2、3)直接居中显示在对应柱体下方,需要手动控制直方图的bins范围和X轴刻度设置,替代默认的自动生成逻辑。以下是修改后的代码及关键说明:

import matplotlib.pyplot as plt

listedvariables = ['distance','duration','age','gender-quantised','hours_of_sleep','frequency_of_alarm_usage','sleepiness_bed','sleepiness_waking','sleep_quality','nap_duration_mins','frequency_of_naps','normal_time_of_wakeup','number_of_times_wakeup_during_night','time_spent_awake_during_night_mins','time_of_going_to_sleep','time_to_fall_asleep_mins','sleep_onset_time','sleep_period_length_mins','total_sleep_duration_mins','time_in_bed_mins','sleep_efficiency','sleep_bout_length_mins','mid_point_of_sleep','takes_naps_yes/no','sleepiness_resolution_index','highest_education_level_acheived','hours_exercise_per_week_in_last_6_months','drink_alcohol_yes/no','drink_caffeine_yes/no','hours_exercise_per_week','hours_of_phone_use_per_week','video_game_phone/tablet_hours_per_week','video_game_all_devices_hours_per_week']

for var in listedvariables: 
    # 获取当前变量的唯一离散值并排序
    unique_vals = sorted(newerdf[var].unique())
    # 自定义bins:每个值左右扩展0.5,让柱体刚好覆盖单个离散值范围
    bins = [val - 0.5 for val in unique_vals] + [unique_vals[-1] + 0.5]
    
    # 生成直方图并指定自定义bins
    fig = newerdf[[var]].hist(bins=bins, figsize=(30,20))
    ax = fig.ravel()[0]
    
    # 设置X轴刻度为离散值,自动居中对齐柱体
    ax.set_xticks(unique_vals)
    
    # 调整标题和刻度大小
    ax.title.set_size(40)
    ax.tick_params(axis='x', labelsize=40)
    ax.tick_params(axis='y', labelsize=40)
    
    plt.tight_layout()

关键逻辑说明

  1. 自定义bins范围:通过给每个离散值加减0.5,让单个柱体的范围变为[val-0.5, val+0.5],确保每个柱体精准对应一个离散数值。
  2. 设置X轴刻度:直接将X轴刻度设置为变量的唯一离散值,此时刻度会自动居中在对应柱体的正下方,不会出现1.5、2.5这类中间过渡刻度。
  3. 简化循环逻辑:直接遍历变量列表,比索引遍历更直观易读。

内容的提问来源于stack exchange,提问作者Caledonian26

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:30:32