matplotlib 如何用avxlines下面的标签替换x刻度

cgh8pdjw  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(133)

我有一个工作脚本来显示来自陀螺仪的信息。我用一条粗细不同的线来表示欧拉角,这条线代表角速度,如下所示。这是x轴;数据存储在pandas dataframe df中,idx是时间步列表:

scaling = 0.1
# x
ax1 = plt.subplot(gs[0,0:2]) # row span 2 columns
widths = np.absolute(df['avelo']['x'].iloc[start:end])
widths *= scaling
ax1.scatter(idx,df['angle']['x'].iloc[start:end],s=widths,c = 'blue')
for i in steplist:
        ax1.axvline(steps[i], linestyle = 'dashed', c = '0.8' )
ax1.axhline(0, linestyle = 'dashed', c = '0.8' )

轴线指示事件。当前,x轴显示时间步长。我想隐藏这些,并替换为avxline标签step1,step2等。我知道如何隐藏x标记,但如何用正确位置的avxline标签替换它们?
编辑:添加了一个情节来澄清这个问题。

ckocjqey

ckocjqey1#

按照this答案,您可以将xtick标签更改为您想要的。由于刻度不与步骤位置对齐,因此必须调整刻度位置以匹配步骤位置。

import numpy as np
import matplotlib.pyplot as plt

plt.close("all")

x = np.linspace(0, 10, 1000)
y = 0.5*np.sin(5*x)

Nsteps = 7
steps = np.linspace(x.min(), x.max(), Nsteps)

fig, ax = plt.subplots()
ax.plot(x, y)
for step in steps:
    ax.axvline(step, color="k", ls="--", alpha=0.5)
ax.set_xticks(steps, [f"Step {n}" for n in range(Nsteps)])
fig.tight_layout()
fig.show()

相关问题