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

lnlaulya  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(115)

我有一个图表,它显示了沿着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()
lo8azlld

lo8azlld1#

您可以使用MultipleLocator来将刻度定位在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()

相关问题