matplotlib 如何更改x轴的文本?

vmdwslir  于 2023-02-23  发布在  其他
关注(0)|答案(1)|浏览(155)

我有下面的图表:

如您所见,x轴的增量为2000。x轴值为时间,我必须更改时间值以使其正常工作。x值(时间列表)的示例如下:

t_list = [13264,13273,13.279,13.301...]

我希望x轴的增量为0.1,并将时间列表中的值更改为如下所示:

t_list = [13.264,13.643,13.689,13.701...]

我只希望x轴显示第一个小数,但还要包含一个"1:"(1:13.1, 1:13.2,1:13.3,etc.
我怎样才能做到这一点?

kr98yfug

kr98yfug1#

您可以使用locator来指示在何处放置刻度,例如100的倍数。使用formatter来指示如何显示值:

import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator

fig, ax = plt.subplots(figsize=(15, 2))
ax.plot([13100, 22000], [1, 1])
ax.xaxis.set_major_locator(MultipleLocator(100))
ax.xaxis.set_major_formatter(lambda x, pos: f'1:{x / 1000:.1f}')
ax.tick_params(axis='x', rotation=90) # optionally rotate the ticks
plt.tight_layout()
plt.show()

您还可以合并次要刻度和主要刻度。以下是一个示例:

import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator

fig, ax = plt.subplots(figsize=(15, 2))
ax.plot([13100, 22000], [1, 1])
ax.xaxis.set_major_locator(MultipleLocator(1000))
ax.xaxis.set_major_formatter(lambda x, pos: f'1:{x / 1000:.0f}')
ax.xaxis.set_minor_locator(MultipleLocator(100))
ax.xaxis.set_minor_formatter(lambda x, pos: f'.{(x / 100) % 10:.0f}')

ax.tick_params(axis='x', which='major', labelsize=12, length=12)
ax.tick_params(axis='x', which='minor', labelsize=9)
plt.tight_layout()
plt.show()

相关问题