Matplotlib如何在坐标轴上添加额外带标签刻度
Matplotlib坐标轴添加额外带标签刻度的实现方法
针对你提到的对数坐标轴下添加自定义刻度的需求,有两种常用实现方案:
方案1:扩展主刻度(无需区分默认刻度和自定义刻度样式)
直接合并原有默认刻度与自定义刻度后重新设置,代码示例如下:
import matplotlib.pyplot as plt import numpy as np x = np.arange(0,10) y = np.exp(-x) fig, axs = plt.subplots(1,1) axs.plot(x,y) axs.set_yscale("log") # 核心实现部分 existing_yticks = axs.get_yticks() # 获取原有默认刻度 extra_yticks = [0.15, 0.25] # 自定义要添加的刻度 all_yticks = np.append(existing_yticks, extra_yticks) axs.set_yticks(all_yticks) # 可选:自定义刻度标签样式,比如给额外刻度保留2位小数,原有刻度用科学计数法 ytick_labels = [] for tick in all_yticks: if tick in extra_yticks: ytick_labels.append(f"{tick:.2f}") else: ytick_labels.append(f"{tick:.0e}") axs.set_yticklabels(ytick_labels) plt.show()
方案2:使用次要刻度(可单独调整自定义刻度样式)
如果需要给额外刻度设置不同的字号、颜色等样式,可以用次要刻度系统实现:
import matplotlib.pyplot as plt import numpy as np x = np.arange(0,10) y = np.exp(-x) fig, axs = plt.subplots(1,1) axs.plot(x,y) axs.set_yscale("log") # 核心实现部分 extra_yticks = [0.15, 0.25] axs.set_yticks(extra_yticks, minor=True) # 将自定义刻度设置为次要刻度 axs.set_yticklabels([f"{t:.2f}" for t in extra_yticks], minor=True) # 单独调整次要刻度的样式 axs.tick_params(axis='y', which='minor', labelsize=9, labelcolor='red', length=4) plt.show()
注意事项
- 如果不需要自定义标签格式,无需调用
set_yticklabels()方法,Matplotlib会自动生成对应刻度的标签 - 两种方法对线性坐标轴、对数坐标轴都适用,x轴添加额外刻度的逻辑完全一致,只需把方法名里的
yticks替换为xticks即可
内容的提问来源于stack exchange,提问作者reloh100
相关产品推荐
相关产品推荐

