我正在使用matplotlib绘制几张16张图像,并使用从中提取图像的列名标记它们的名称。我遇到了一个问题,那就是情节索引及其标签不匹配。
这是我到目前为止的烦恼。
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
]
名称的索引从1而不是0开始,从而使标签失真。最后一个情节也没有名称。
关于如何改善标签的任何想法?
答案 0 :(得分:2)
您应该对代码进行一些重构:
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)
答案 1 :(得分:1)
subplot(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)