如何在Matplotlib中为X轴的不同分段设置不同颜色?
实现Matplotlib X轴分段颜色(含对应刻度)
要解决X轴0-0.9段为蓝色、0.9-3段为红色(包含轴本身及对应刻度)的需求,无需用额外plot线的方式,直接通过修改坐标轴和刻度属性实现,完整代码如下:
import matplotlib.pyplot as plt x = [0.9, 1, 1.1, 1.2, 1.3] y = [0, 0.1, 0.3, 0.6, 1] fig, ax = plt.subplots() # 绘制原始折线 ax.plot(x, y) # 隐藏默认的底部X轴,避免和自定义分段轴重叠 ax.spines['bottom'].set_visible(False) # 绘制分段颜色的X轴:xmin/xmax为轴范围的比例值(X轴总范围0-3) # 0-0.9区间:蓝色 ax.axhline(y=0, xmin=0, xmax=0.9/3, color='blue', linewidth=2) # 0.9-3区间:红色 ax.axhline(y=0, xmin=0.9/3, xmax=1, color='red', linewidth=2) # 设置X轴刻度 ax.set_xticks([0, 0.5, 0.9, 1.5, 2, 2.5, 3]) ax.set_xlim(0, 3) ax.set_ylim(0, max(y)) # 根据刻度值设置对应颜色 for tick_label in ax.get_xticklabels(): tick_val = float(tick_label.get_text()) tick_label.set_color('blue' if tick_val <= 0.9 else 'red') plt.margins(x=0, y=0) plt.show()
关键说明
- 用
ax.axhline绘制分段轴:xmin和xmax是相对于X轴总范围的比例,这里X轴范围是0-3,所以0.9对应的比例是0.9/3 - 隐藏默认底部坐标轴(spine),避免重复显示
- 遍历所有X轴刻度标签,根据刻度值所在区间设置对应颜色
内容的提问来源于stack exchange,提问作者WaterDrop
相关产品推荐
相关产品推荐

