python-3.x ValueError:FixedLocator位置的数目(5)(通常来自set_ticks的呼叫)与ticklabels的数目(12)不符

ecbunoof  于 2022-11-19  发布在  Python
关注(0)|答案(4)|浏览(723)

这段代码以前是工作的,但是在创建新环境后,它停止了对该行的工作

plt.xticks(x, months, rotation=25,fontsize=8)

如果我注解这一行,那么没有错误,在放置这一行后,会抛出错误
第一次

1yjd4xko

1yjd4xko1#

我在使用子图时遇到了同样的错误。我注意到,如果重新标记的轴(在我的情况下是y轴)显示所有标签,错误就会消失。如果没有,则会显示您标记的错误。我建议增加图表高度,直到默认情况下显示所有y轴标签(请参见下面的屏幕截图)。
或者,我建议使用ax.set_xticks(...)定义FixedLocator价格点位置,然后使用ax.set_xticklables(...)设置标签。
Ever 2nd y-axis label drawn
Every y-axis label drawn and over-written with custom labels

ppcbkaq5

ppcbkaq52#

我也偶然发现了这个错误,并发现让你的xtick_labels和xticks都成为一个等长的列表是有效的。

def month(num):
  # returns month name based on month number

num_elements = len(x)
X_Tick_List = []
X_Tick_Label_List=[]

for item in range (0,num_elements):
    X_Tick_List.append(x[item])
    X_Tick_Label_List.append(month(item+1))

plt.xticks(ticks=X_Tick_List,labels=X_Tick_LabeL_List, rotation=25,fontsize=8)
oxalkeyp

oxalkeyp3#

这个问题似乎有点老,但我刚才偶然发现了一个类似的问题:在更新到matplotlib版本3.2.2之后,我的ax.set(xticklabels=..., xticks=...)行也出现了同样的错误,在此之前,它一直工作正常。
轴的set方法似乎根据set的参数顺序调用其他方法。在较早的matplotlib版本中,在解包set-arguments之后,似乎存在某种排序。
重新排列参数的顺序,首先设置新的xticks数,这样就解决了我的问题:ax.set(xticks=..., xticklabels=...)

eqqqjvef

eqqqjvef4#

当matplotlib无法在gist中打包列名时会发生这种情况。以前我有5列,这还可以,下次我有100+列,这会导致错误。
行中出错:
g.set_xticklabels(df['code'], rotation=15, fontdict={'fontsize': 16})

相关问题