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次滴答声。也许你想解释一下真正的问题是什么,很抱歉,这是一个打字错误,我每年只想要一个网格