首页 > 解决方案 > Matplotlib 由于空刻度而污染了 x 轴

问题描述

我正在尝试在 matplotlib 中设置自定义 xticks,遵循这个问题

使用自定义文本绘制 x 轴点

然而,在链接的问题中,x 轴只有 4 个数据点,它们为每个数据点分配一个标签。我有 100 个数据点,以弧度表示完整的正弦周期,我只想标记“有趣”的点 ( 0.0, π/4, π/2, 3π/2)

我最接近我想要的是创建一个包含 100 个空字符串的列表,然后将所需的字符串设置为所需的值。然而,由于空字符串,x 轴变得非常污染。

我怎样才能摆脱这种“污染”并只标记所需的位置?

import matplotlib.pyplot as plt
import numpy as np

# generate 100 points in the range [0.0, 2*pi)
t = np.linspace(0.0, 2*np.pi, 101)[:-1] 
y = np.sin(t)

ticks = [''] * 100
ticks[0] = '0.0'
ticks[25] = 'π/4'
ticks[50] = 'π/2'
ticks[75] = '3π/2'

plt.xticks(t, ticks)

plt.plot(t, y)
plt.show()

在此处输入图像描述

标签: pythonmatplotlibplot

解决方案


您的显示似乎确实有误。sin(pi/4)等于0.78并且不会是您将其放在图表上的位置。

也就是说,该xticks函数允许您添加自定义刻度作为第一个参数。您没有使用行空间。请执行下列操作:

ticks = [0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi]
ticks_labels = ['0', 'π/2', 'π', '3π/2', '2π']


plt.xticks(ticks, ticks_labels)

你得到的结果是

在此处输入图像描述


推荐阅读