Python Matplotlib记号和记号标签位置与轴分开定位

Python Matplotlib记号和记号标签位置与轴分开定位,python,matplotlib,Python,Matplotlib,是否有方法锚定x轴的记号和记号标签,以便它们在与实际x轴与y轴交叉的位置不同的位置与y轴交叉?这基本上可以通过以下方式实现: ax = plt.gca() ax.get_xaxis().set_tick_params(pad=5) 或 例如: 除了我使用音频文件输入,y轴是可变的(基于波形的最高/最低振幅)。因此,最大和最小y轴值根据音频文件的不同而变化。我担心pad=NUM将相对于y轴移动 因此,我正在寻找一种方法来完成pad的功能,但要将记号和记号标签定位在最小的y轴值上 作为一种奖励,

是否有方法锚定x轴的记号和记号标签,以便它们在与实际x轴与y轴交叉的位置不同的位置与y轴交叉?这基本上可以通过以下方式实现:

ax = plt.gca()
ax.get_xaxis().set_tick_params(pad=5)

例如:

除了我使用音频文件输入,y轴是可变的(基于波形的最高/最低振幅)。因此,最大和最小y轴值根据音频文件的不同而变化。我担心
pad=NUM
将相对于y轴移动

因此,我正在寻找一种方法来完成
pad
的功能,但要将记号和记号标签定位在最小的y轴值上

作为一种奖励,将其翻转以使y轴锚定在与y轴刻度标签不同的位置肯定也会使某些人受益

在我的特殊情况下,x轴在y=0时与y轴相交。x轴记号和记号标签有时为-1.0,有时为-0.5,有时为-0.25,等等。我始终知道y轴的最小值,因此希望它成为x轴记号和记号标签的定位点。(事实上,如果可以单独处理记号和记号标签,我很乐意只使用x轴记号标签)。上图中显示了一个例子(我用
pad=500
实现了这一点)


我查看了其他线程和文档,但我要么没有找到它,要么不知道找到它的正确术语。

更新:我添加了网格线,由于顶部x轴移动,出现了非常意外的行为(例如,线型和线宽未按预期工作)。我意识到还有一个更好的方法——保持轴(关闭样条曲线)并简单地在(0,0)到(max_time,0)之间绘制第二条线


明白了!我想得不对

问题:将底部x轴移动到中心并填充记号标签

解决方案:保持底部x轴的位置(关闭底部脊椎),并将顶部x轴移动到中心(保持顶部脊椎,但关闭记号和记号标签)


更新:我添加了网格线,由于顶部x轴发生了移动,导致出现了非常意外的行为(例如,线型和线宽没有按预期工作)。我意识到还有一个更好的方法——保持轴(关闭样条曲线)并简单地在(0,0)到(max_time,0)之间绘制第二条线


明白了!我想得不对

问题:将底部x轴移动到中心并填充记号标签

解决方案:保持底部x轴的位置(关闭底部脊椎),并将顶部x轴移动到中心(保持顶部脊椎,但关闭记号和记号标签)


此外,我发现在子批次中包含波形需要更改填充。因此,在这种方法中,能够远离
pad
并将其锚定到y轴上的值也是首选。此外,我发现,将波形包含在子批次中需要更改填充。因此,在这种方法中,能够远离
pad
并将其锚定到y轴上的值也是首选的。
ax.xaxis.set_tick_params(pad=500)
ax.plot([0,times[-1]], [0,0], color='k') # Creates a 'false' x-axis at y=0
ax.spines['top'].set_color('none') # Position unchanged
ax.spines['bottom'].set_color('none') # Position unchanged
ax.spines['top'].set_position('center')
ax.spines['bottom'].set_color('none') # Position unchanged
ax.xaxis.set_tick_params(top='off')