Python绘制直方图:设置不等间距区间与坐标轴
如何在Matplotlib中绘制自定义区间的直方图
没问题,我来帮你实现符合需求的直方图!核心就是利用Matplotlib的hist()函数的bins参数直接指定你想要的区间边界,下面是完整的步骤和代码示例:
步骤1:准备数据与导入库
首先我们需要导入必要的库,并且读取你的时间-压力数据(这里用你提供的示例数据演示):
import matplotlib.pyplot as plt import pandas as pd # 读取你的数据(如果是CSV文件可以用pd.read_csv()) data = pd.DataFrame({ 'Time': ['1/1/2017 0:00', '3/1/2017 0:10', '4/1/2017 0:20', '5/1/2017 0:30', '6/1/2017 0:40', '7/1/2017 0:50', '12/1/2017 1:00'], 'Pressure': [5.8253, 4.2785, 5.20041, 4.40774, 4.03228, 5.011924, 3.9309888] })
步骤2:定义自定义区间
按照你的需求,我们设置区间边界为[0, 40, 60, 65, 70, 75, 80],这样直方图会自动将数据分到对应的区间中:
custom_bins = [0, 40, 60, 65, 70, 75, 80]
注:如果你的数据中有40-60之间的值,且你不想展示这个区间的柱子,可以先筛选数据排除该范围:
filtered_data = data[(data['Pressure'] < 40) | (data['Pressure'] >= 60)]
步骤3:绘制直方图
调用plt.hist()并传入自定义区间,同时设置样式让它更接近你提供的示例图:
plt.figure(figsize=(8, 6)) # 绘制直方图,指定自定义区间、颜色和边缘色 n, bins, patches = plt.hist(data['Pressure'], bins=custom_bins, color='#1f77b4', edgecolor='black') # 添加标签与标题 plt.xlabel('Pressure') plt.ylabel('Frequency') plt.title('Pressure Distribution') # 设置x轴刻度为自定义区间的边界,和示例图对齐 plt.xticks(custom_bins) # 显示图形 plt.show()
关键说明
bins=custom_bins:这是实现自定义区间的核心参数,Matplotlib会按照你给出的边界划分数据区间。plt.xticks(custom_bins):确保x轴刻度显示你定义的区间值,让图表更清晰直观。- 如果你的数据有超出80的数值,可以在
custom_bins末尾添加一个更大的边界(比如100),避免这些数据被忽略。
内容的提问来源于stack exchange,提问作者Unknown




