如何设置次网格线的数量?

bli*_*lib 2 python matplotlib gridlines

我有一个图表,显示沿 x 轴的周数;我怎样才能有 6 条中间小网格线来参考一周中的几天?

默认情况下,它似乎会执行 4 条小行,但如何增加它呢?

假设每周从星期一开始,是否可以用“T”、“W”、“T”、“F”、“S”、“S”来标记次要线条?

from matplotlib import pyplot
import numpy as np
 
# x-axis values 
weeks = np.arange(0,8)
 
# y-axis values 
cm = np.flip(np.arange(94,102))


pyplot.minorticks_on()

pyplot.grid(which='major', linestyle='-', linewidth='1', color='red')
pyplot.ylabel("cm")
pyplot.xlabel("weeks")

pyplot.plot(weeks, cm, 'go') 

pyplot.grid(True, 'both')
 
pyplot.show() 
Run Code Online (Sandbox Code Playgroud)

Joh*_*anC 5

您可以使用 aMultipleLocator将刻度定位在 的倍数处1/7。还有一个格式化程序,根据使用的 7 的分数设置正确的字母。

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

weeks = np.arange(0, 8)
cm = np.flip(np.arange(94, 102))

fig, ax = plt.subplots()
ax.plot(weeks, cm, 'go')
ax.grid(which='major', linestyle='-', linewidth='1', color='red')
ax.set_ylabel("cm")
ax.set_xlabel("weeks")
ax.minorticks_on()
ax.xaxis.set_minor_locator(MultipleLocator(1 / 7))
ax.xaxis.set_minor_formatter(lambda x, pos: 'MTWTFSS'[int(round(x * 7)) % 7])
ax.tick_params(axis='x', which='minor', labelsize=5)
ax.grid(True, which='both')

plt.show()
Run Code Online (Sandbox Code Playgroud)

一周中每天的小刻度标签