plt.imshow(samples[0]) plt.show()展示不了图片
时间: 2023-10-06 15:13:47 浏览: 87
如果使用`plt.imshow()`函数无法显示图片,可能是由于Matplotlib的交互模式未开启导致的。你可以在代码中添加下面这句话来开启交互模式:
```python
plt.ion()
```
这会将Matplotlib的交互模式设置为开启。如果你想关闭交互模式,可以使用下面这句话:
```python
plt.ioff()
```
另外,如果你使用的是Jupyter Notebook或IPython等交互式环境,可以考虑使用`%matplotlib inline`来显示图片,例如:
```python
%matplotlib inline
import matplotlib.pyplot as plt
plt.imshow(samples[0])
plt.show()
```
这会将Matplotlib的显示模式设置为内联模式,使得图片可以直接在Notebook中显示。
相关问题
plt.imshow(samples[0]) plt.show()plt.ion()展示不了图片
如果在使用`plt.imshow(samples[0])`和`plt.show()`函数显示图片时,即使使用`plt.ion()`函数开启了交互模式,仍然无法显示图片,可能是由于Matplotlib的默认后端无法正常工作。你可以尝试使用其他的Matplotlib后端来显示图片。
首先,你需要检查你正在使用的Matplotlib后端。你可以在Python控制台中输入以下代码:
```python
import matplotlib
print(matplotlib.get_backend())
```
这会输出你当前正在使用的Matplotlib后端名称。如果使用的是默认后端,则输出为`TkAgg`。如果你不确定你的后端是否能够正常工作,可以尝试切换到其他的后端。
例如,你可以使用`Qt5Agg`后端:
```python
import matplotlib
matplotlib.use('Qt5Agg')
import matplotlib.pyplot as plt
plt.ion()
plt.imshow(samples[0])
plt.show()
```
这会将Matplotlib的后端设置为`Qt5Agg`,并使用`plt.imshow()`和`plt.show()`函数显示图片。如果你想使用其他的后端,可以将`'Qt5Agg'`替换成你想要的后端名称。需要注意的是,在使用`matplotlib.use()`函数设置后端之前,你必须先导入`matplotlib`模块,并在设置后端之后再导入`pyplot`模块。
for y, cls in enumerate(classes): idxs = np.flatnonzero(y_train == y) idxs = np.random.choice(idxs, samples_per_class, replace=False) for i, idx in enumerate(idxs): plt_idx = i * num_classes + y + 1 plt.subplot(samples_per_class, num_classes, plt_idx) plt.imshow(X_train[idx].astype('uint8')) plt.axis('off') if i == 0: plt.title(cls) plt.show()
这段代码是用于显示训练数据集中不同类别的样本图像。它使用了一个循环来遍历每个类别,并选择该类别中指定数量的样本进行显示。
在这段代码中,`classes` 是一个包含所有类别的列表。`y_train` 是训练数据集的目标标签,它是一个一维数组。`samples_per_class` 是每个类别要显示的样本数。`num_classes` 是类别的总数。
首先,通过 `np.flatnonzero(y_train == y)` 找到所有目标标签等于当前类别 `y` 的样本的索引。然后,使用 `np.random.choice` 随机选择 `samples_per_class` 个索引,确保不重复。接下来,使用 `plt.subplot` 在图像中创建一个子图,其中 `plt_idx` 用于确定子图的位置。然后,使用 `plt.imshow` 显示选定索引对应的图像。最后,通过设置 `plt.axis('off')` 取消坐标轴显示。如果是每个类别的第一个样本,使用 `plt.title(cls)` 设置子图标题为该类别的名称。
整个过程重复进行,直到所有类别的样本都被显示完毕。最后,使用 `plt.show()` 显示所有子图。
这段代码的作用是帮助我们可视化训练数据集中不同类别的样本图像。
阅读全文