【发布时间】:2019-04-01 14:25:15
【问题描述】:
我正在使用 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 开始,这会扭曲标签。最后一个情节也没有名字。
关于如何改进标签的任何想法?
【问题讨论】:
-
你自己从 1 开始计数,
i = i+1在循环内。 -
从 0 开始也无济于事 @ForceBru,因为有 16 个地块,所以 plt.subplot 要求数字范围在 0 到 16 之间。
-
如果您确定列表中有 16 个元素,则在从循环中删除
i = i+1后您应该不会收到 IndexError。 -
删除
i= i+1循环会在plt.subplot(4,4,i)上返回错误。 -
大惊小怪:你为什么不能只使用
plt.xlabel((names[i-1]), fontsize=10)?
标签: python matplotlib