Python 如何设置垂直网格线matplotlib

Python 如何设置垂直网格线matplotlib,python,matplotlib,Python,Matplotlib,我有一个显示每个月的时间序列图和一个值 我添加了gridlinesplt.grid(True,which='major'),它每个月都会显示。我的时间序列是10年,我每年只想看到1个网格 我的主要标签是: ax.xaxis.get_majorticklocs() array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13., 14., 15., 16., 1

我有一个显示每个月的时间序列图和一个值


我添加了gridlines
plt.grid(True,which='major')
,它每个月都会显示。我的时间序列是10年,我每年只想看到1个网格

我的主要标签是:

ax.xaxis.get_majorticklocs()
array([  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.,
        11.,  12.,  13.,  14.,  15.,  16.,  17.,  18.,  19.,  20.,  21.,
        22.,  23.,  24.,  25.,  26.,  27.,  28.,  29.,  30.,  31.,  32.,
        33.,  34.,  35.,  36.,  37.,  38.,  39.,  40.,  41.,  42.,  43.,
        44.,  45.,  46.,  47.,  48.,  49.,  50.,  51.,  52.,  53.,  54.,
        55.,  56.,  57.,  58.,  59.,  60.,  61.,  62.,  63.,  64.,  65.,
        66.,  67.,  68.,  69.,  70.,  71.,  72.,  73.,  74.,  75.,  76.,
        77.,  78.,  79.,  80.,  81.,  82.,  83.,  84.,  85.,  86.,  87.,
        88.,  89.,  90.,  91.,  92.,  93.,  94.,  95.,  96.,  97.,  98.,
        99., 100., 101., 102., 103., 104., 105., 106., 107., 108., 109.,
       110., 111., 112.])
array(['0.0', '', '', '', '', '', '', '', '', '', '', '11.0', '', '', '',
       '', '', '', '', '', '', '', '22.0', '', '', '', '', '', '', '', '',
       '', '', '33.0', '', '', '', '', '', '', '', '', '', '', '44.0', '',
       '', '', '', '', '', '', '', '', '', '55.0', '', '', '', '', '', '',
       '', '', '', '', '66.0', '', '', '', '', '', '', '', '', '', '',
       '77.0', '', '', '', '', '', '', '', '', '', '', '88.0', '', '', '',
       '', '', '', '', '', '', '', '99.0', '', '', '', '', '', '', '', '',
       '', '', '110.0', '', '112.0'], dtype='<U32')
我试图用以下方法更改主刻度标签:

labels = ['']*len(ax.xaxis.get_majorticklocs())
idx=list(range(len(labels))[0::11])
for i in idx:
    labels[i]=ax.xaxis.get_majorticklocs()[i]
labels[len(labels)-1]=ax.xaxis.get_majorticklocs()[len(labels)-1]
from numpy import array 
labels=array(labels)
ax.set_xticks(labels)
标签包括:

ax.xaxis.get_majorticklocs()
array([  0.,   1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.,  10.,
        11.,  12.,  13.,  14.,  15.,  16.,  17.,  18.,  19.,  20.,  21.,
        22.,  23.,  24.,  25.,  26.,  27.,  28.,  29.,  30.,  31.,  32.,
        33.,  34.,  35.,  36.,  37.,  38.,  39.,  40.,  41.,  42.,  43.,
        44.,  45.,  46.,  47.,  48.,  49.,  50.,  51.,  52.,  53.,  54.,
        55.,  56.,  57.,  58.,  59.,  60.,  61.,  62.,  63.,  64.,  65.,
        66.,  67.,  68.,  69.,  70.,  71.,  72.,  73.,  74.,  75.,  76.,
        77.,  78.,  79.,  80.,  81.,  82.,  83.,  84.,  85.,  86.,  87.,
        88.,  89.,  90.,  91.,  92.,  93.,  94.,  95.,  96.,  97.,  98.,
        99., 100., 101., 102., 103., 104., 105., 106., 107., 108., 109.,
       110., 111., 112.])
array(['0.0', '', '', '', '', '', '', '', '', '', '', '11.0', '', '', '',
       '', '', '', '', '', '', '', '22.0', '', '', '', '', '', '', '', '',
       '', '', '33.0', '', '', '', '', '', '', '', '', '', '', '44.0', '',
       '', '', '', '', '', '', '', '', '', '55.0', '', '', '', '', '', '',
       '', '', '', '', '66.0', '', '', '', '', '', '', '', '', '', '',
       '77.0', '', '', '', '', '', '', '', '', '', '', '88.0', '', '', '',
       '', '', '', '', '', '', '', '99.0', '', '', '', '', '', '', '', '',
       '', '', '110.0', '', '112.0'], dtype='<U32')

您只设置了主刻度,缺少小刻度。我曾经有过一个类似的问题,我只想要每年一次的主线和每季度一次的小主线,包括勾号标签。我的解决方案采用以下方式(pands中的pd…):

年份=列表(范围(2000年、2018年))
年份刻度位置=[pd.to_datetime(str(year)+“-01-01”)表示年份,以年为单位]
宿舍=名单()
季度\勾号\位置=列表()
年份:
对于范围(1,5)内的q:
新季度=pd.to_datetime(str(年份)+“-”+str(q*3-2).zfill(2)+“--01”)

如果新季度“我每个月只想看到1个网格”。。。每个月只有一个网格(垂直线)。你的问题和你公布的数字目前似乎相互矛盾。我清楚地看到连续两年之间有11次滴答声。也许你想解释一下真正的问题是什么,很抱歉,这是一个打字错误,我每年只想要一个网格