Python Matplotlib xlabel打印错误(索引器错误:列表索引超出范围)
我正在使用matplotlib绘制几个16幅图像,并使用从中提取这些图像的列名标记它们的名称。我遇到了一个问题,图的索引和它们的标签不匹配 这是我到目前为止的工作流程Python Matplotlib xlabel打印错误(索引器错误:列表索引超出范围),python,matplotlib,Python,Matplotlib,我正在使用matplotlib绘制几个16幅图像,并使用从中提取这些图像的列名标记它们的名称。我遇到了一个问题,图的索引和它们的标签不匹配 这是我到目前为止的工作流程 names = [(i) for i in (columns)] names 列名列表如下所示: ['value__longest_strike_above_mean', 'value__longest_strike_below_mean', 'value__maximum', 'value__mean', 'value
names = [(i) for i in (columns)]
names
列名列表如下所示:
['value__longest_strike_above_mean',
'value__longest_strike_below_mean',
'value__maximum',
'value__mean',
'value__mean_abs_change',
'value__mean_change',
'value__median',
'value__minimum',
'value__number_cwt_peaks__n_12',
'value__number_cwt_peaks__n_6',
'value__quantile__q_0.05',
'value__quantile__q_0.15',
'value__quantile__q_0.85',
'value__quantile__q_0.95',
'value__skewness',
'value__sum_values']
有16个名称将分配给下面的图
for i in range(0,16):
img = f2Array[:,:,i]
i = i+1
plt.subplot(4,4,i)
plt.xticks([])
plt.yticks([])
plt.imshow(img, cmap="gist_earth")
plt.xlabel((names[i]), fontsize=10)
以这种方式绘图给了我以下错误
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-284-299c4a617b63> in <module>()
13 plt.yticks([])
14 plt.imshow(img, cmap="gist_earth")
---> 15 plt.xlabel((names[i]), fontsize=10)
16
17
IndexError: list index out of range
---------------------------------------------------------------------------
索引器回溯(最后一次最近调用)
在()
13 plt.yticks([])
14 plt.imshow(img,cmap=“gist_earth”)
--->15 plt.xlabel((名称[i]),fontsize=10)
16
17
索引器:列表索引超出范围
]
名称的索引从1开始,而不是从0开始,这扭曲了标签。最后一个情节也没有名字
关于如何改进标签有什么想法吗?子批次(nrows、ncols、index、**kwargs)的索引从1开始。所以只需删除i=i+1
并使用plt.subplot(4,4,i+1)
。试试这个:
for i in range(0,16):
img = f2Array[:,:,i]
plt.subplot(4,4,i+1)
plt.xticks([])
plt.yticks([])
plt.imshow(img, cmap="gist_earth")
plt.xlabel((names[i]), fontsize=10)
您应该稍微重构一下代码:
for i, name in enumerate(names):
img = f2Array[:,:,i]
plt.subplot(4,4,i + 1)
plt.xticks([])
plt.yticks([])
plt.imshow(img, cmap="gist_earth")
plt.xlabel((name), fontsize=10)
对于i,枚举中的名称(名称):
img=f2Array[:,:,i]
plt.子地块(4,4,i+1)
plt.xticks([])
plt.yticks([])
plt.imshow(img,cmap=“gist_earth”)
plt.xlabel((name),fontsize=10)
您自己开始从1开始计数,循环中有i=i+1
。从0开始也没有帮助@ForceBru,plt.subplot要求数字在0到16之间,因为有16个绘图。如果您确定列表中有16个元素,从循环中删除i=i+1
后,不应该获取索引器。删除i=i+1
循环会在plt.subplot(4,4,i)
上返回错误。所有这些麻烦:为什么不能只使用plt.xlabel((名称[i-1]),fontsize=10)
?