Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法在Jupyter QtConsole中打印颜色栏:未找到可映射项。。。错误_Python_Matplotlib_Plot_Jupyter_Qtconsole - Fatal编程技术网

Python 无法在Jupyter QtConsole中打印颜色栏:未找到可映射项。。。错误

Python 无法在Jupyter QtConsole中打印颜色栏:未找到可映射项。。。错误,python,matplotlib,plot,jupyter,qtconsole,Python,Matplotlib,Plot,Jupyter,Qtconsole,我看到下面的示例来绘制图像和颜色贴图: 代码: 从这里开始: 但当我从控制台执行此操作时,我得到: i、 e.立即显示图像,不等待第二个命令,第二个命令后出现以下错误: 运行时错误:找不到可用于创建颜色栏的映射。首先定义一个可映射的对象,例如使用imshow的图像或使用contourf的轮廓集 这是因为您分别运行这两个命令 在第一个命令中,创建图像并以内联方式显示。然后,地物对象被丢弃,无法再更改 第二个命令现在应用于不包含图像的新地物 有几种可能的解决方案: 示例1:正常模式 这将在单独的窗口

我看到下面的示例来绘制图像和颜色贴图:

代码:

从这里开始:

但当我从控制台执行此操作时,我得到:

i、 e.立即显示图像,不等待第二个命令,第二个命令后出现以下错误:

运行时错误:找不到可用于创建颜色栏的映射。首先定义一个可映射的对象,例如使用imshow的图像或使用contourf的轮廓集


这是因为您分别运行这两个命令

在第一个命令中,创建图像并以内联方式显示。然后,地物对象被丢弃,无法再更改

第二个命令现在应用于不包含图像的新地物

有几种可能的解决方案:

示例1:正常模式 这将在单独的窗口中显示该图。所有操作均适用于同一图形,该图形在使用plt.show显示之前不可见。然后,此函数将阻止脚本,直到图形关闭

In [1]: import matplotlib.pyplot as plt

In [2]: import matplotlib.image as mpimg

In [3]: img = mpimg.imread('/tmp/stinkbug.png')

In [4]: lum_img = img[:, :, 0]

In [5]: plt.imshow(lum_img)
Out[5]: <matplotlib.image.AxesImage at 0x7f1a24057748>

In [6]: plt.colorbar()
Out[6]: <matplotlib.colorbar.Colorbar at 0x7f1a24030a58>

In [7]: plt.show()
示例2:交互模式 这与示例1相同,但figure窗口会立即显示,并通过连续的绘图调用进行更新。对我来说,这在IPython中有效,但我在Jupyter控制台中只有一个黑色窗口

In [1]: import matplotlib.pyplot as plt

In [2]: import matplotlib.image as mpimg

In [3]: plt.ion()

In [4]: img = mpimg.imread('/tmp/stinkbug.png')

In [5]: lum_img = img[:, :, 0]

In [6]: plt.imshow(lum_img)
Out[6]: <matplotlib.image.AxesImage at 0x7f7f2061e9b0>

In [7]: plt.colorbar()
Out[7]: <matplotlib.colorbar.Colorbar at 0x7f7f20605128>
示例3:内联打印 如果需要内联模式,只需在一个输入行中执行多个命令,如下所示

示例4:高级内联打印 手动创建地物对象。在该对象上执行操作创建子图、绘制图像、添加颜色栏并随时显示内联图形,只需在命令行中键入其名称即可


在这个例子中,语句显然是在单独的行中输入的,这是怎么发生的呢?另外,我无法以任何方式运行您的第二个示例。是否可以显式地运行第一个示例,而不依赖于行顺序?在这方面,该示例有点马虎。命令是正确的,但在命令行中键入命令时,情况并非如此。我用更多的例子更新了答案。虽然我不知道你所说的“依赖线路顺序”是什么意思,但我希望你能在这些示例中找到你想要的:
In [1]: import matplotlib.pyplot as plt

In [2]: import matplotlib.image as mpimg

In [3]: plt.ion()

In [4]: img = mpimg.imread('/tmp/stinkbug.png')

In [5]: lum_img = img[:, :, 0]

In [6]: plt.imshow(lum_img)
Out[6]: <matplotlib.image.AxesImage at 0x7f7f2061e9b0>

In [7]: plt.colorbar()
Out[7]: <matplotlib.colorbar.Colorbar at 0x7f7f20605128>