📜  yticks matplotlib - Python (1)

📅  最后修改于: 2023-12-03 15:35:49.443000             🧑  作者: Mango

yticks matplotlib - Python

matplotlib 中,yticks 用于设置图表中的 Y 轴刻度、标签和格式。通过 yticks,我们可以让 Y 轴的刻度和标签更加直观地反映数据的分布情况。

基本用法

下面是 yticks 的基本用法:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y)
plt.yticks(np.arange(-1, 1.1, 0.2))
plt.show()

在上面的例子中,yticks 接受一个参数,即要设置的刻度值。np.arange(-1, 1.1, 0.2) 表示从 -1 到 1(不包括 1)的步长为 0.2 的一组数,这些数将会作为 Y 轴的刻度值。然后我们调用 plt.plot(x, y) 绘制曲线,并通过 plt.yticks() 设置 Y 轴的刻度值。

设置刻度标签

如果想要给 Y 轴的刻度加上标签,可以使用 yticks 的第二个参数:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y)
plt.yticks(np.arange(-1, 1.1, 0.2), ['min', '-0.8', '-0.6', '-0.4', '-0.2', '0', '0.2', '0.4', '0.6', '0.8', 'max'])
plt.show()

上面的例子中,plt.yticks() 的第二个参数是一个与刻度对应的字符串列表,这些字符串将会作为 Y 轴刻度的标签显示出来。

设置标签格式

我们还可以使用 yticks 的第三个参数设置标签的格式。通常情况下,我们会想要设置标签的格式为带有单位的数值,比如 1000 变为 1k,1000000 变为 1M。这时可以使用 matplotlib.ticker 模块中的 FuncFormatter 类。

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

fig, ax = plt.subplots()
ax.plot(x, y)

def format_func(value, tick_number):
    if value >= 1e6:
        value = round(value / 1e6, 1)
        return '{}M'.format(value)
    elif value >= 1e3:
        value = round(value / 1e3, 1)
        return '{}k'.format(value)
    else:
        return int(value)

ax.yaxis.set_major_formatter(ticker.FuncFormatter(format_func))
plt.show()

在上面的例子中,FuncFormatter 的参数是一个函数,接受两个参数:要格式化的数值和要格式化的刻度数量。在函数内部,我们可以根据数值的大小返回不同的字符串。在这个例子中,如果数值大于或等于 $10^6$,就将它除以 $10^6$,保留一位小数,并添加一个 'M',这样就可以将 1000000 格式化为 1M;如果数值大于或等于 $10^3$,就将它除以 $10^3$,保留一位小数,并添加一个 'k',这样就可以将 1000 格式化为 1k;其他情况直接返回整数形式的数值。

总结

通过 yticks,我们可以更加直观地反映数据的分布情况,通过设置刻度、标签和格式,我们能够让图表更加易于理解。以上是 yticks 的一些基本用法,读者可以根据实际需求进行更加复杂的设置。