Python中箱线图的连续X轴刻度设置方法
调整X轴为等间距连续刻度的方法
要将当前仅显示箱线图对应X值的轴改为等间距连续刻度,只需手动设置X轴的刻度范围与刻度点即可,具体操作如下:
步骤说明
- 确定X轴的完整范围:涵盖箱线图的X值、预测点的X值
- 生成等间距的刻度序列
- 将刻度序列应用到坐标轴上
修改后的完整代码
import numpy as np import matplotlib.pyplot as plt fig, ax = plt.subplots() # Dummy x-axis values variable = [1.6, 1.8, 2.0, 2.2, 2.5] # Dummy data dummy1 = np.random.rand(10, len(variable)) # Plot dummy data as box plots ax.boxplot(dummy1, positions=variable, notch=True, patch_artist=True) # Fit data with a quadratic polynomial fit = np.polyfit(variable, np.nanmedian(dummy1, axis=0), 2) # More dummy data dummy2 = np.random.rand(10, 1) pred_x = np.nanmedian(dummy2) # Make a prediction prediction = fit[0] * dummy2 ** 2 + fit[1] * dummy2 + fit[2] pred_y = np.nanmedian(prediction) # Plot the prediction median as a star ax.plot(pred_x, pred_y, '*') # Get the lowest and highest x-axis values min_x = min(variable[0], pred_x) max_x = max(variable[-1], pred_x) # Fine-grain values for the fit plot x = np.linspace(min_x, max_x, 1000) y = fit[0] * x ** 2 + fit[1] * x + fit[2] # Plot the fit ax.plot(x, y, '--') # 设置等间距连续刻度 # 生成步长0.1的等间距刻度,可根据需求调整步长 xticks = np.arange(np.floor(min_x*10)/10, np.ceil(max_x*10)/10 + 0.1, 0.1) ax.set_xticks(xticks) # 可选:设置刻度标签保留1位小数 ax.set_xticklabels([f'{tick:.1f}' for tick in xticks]) ax.grid(True) plt.show()
关键代码解释
- 确定X轴范围:通过
min_x和max_x覆盖所有需展示的X值(箱线图位置、预测点),确保刻度范围完整。 - 生成等间距刻度:用
np.arange生成指定步长的连续刻度,np.floor和np.ceil让刻度从整十分位开始/结束,视觉更规整。 - 应用刻度:
ax.set_xticks()设置刻度位置,ax.set_xticklabels()可选优化标签显示格式。
如果想让matplotlib自动生成适配的等间距刻度,可简化为以下代码,无需手动生成刻度序列:
ax.set_xlim(min_x - 0.1, max_x + 0.1) # 轻微扩大范围避免内容贴边 ax.locator_params(axis='x', nbins=10) # 指定X轴刻度数量,自动生成等间距刻度
内容的提问来源于stack exchange,提问作者MauroL
相关产品推荐
相关产品推荐

