【问题标题】:Can't plot colorbar in Jupyter QtConsole: No mappable was found ... error无法在 Jupyter QtConsole 中绘制颜色条:未找到可映射的...错误
【发布时间】:2016-05-19 09:27:23
【问题描述】:

我看到以下示例来绘制图像和颜色图:

代码:

imgplot = plt.imshow(lum_img)
plt.colorbar()

从这里:http://matplotlib.org/users/image_tutorial.html

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

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

RuntimeError: 找不到可用于创建颜色条的可映射对象。首先定义一个可映射对象,例如图像(使用 imshow)或轮廓集(使用 contourf)。

【问题讨论】:

    标签: python matplotlib plot jupyter qtconsole


    【解决方案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 相同,但图形窗口会立即显示并随着连续的绘图调用而更新。 (对我来说,这在 IPython 中有效,但在 Jupyter QtConsole 中我只得到一个黑色窗口。)

    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:高级内联绘图

    手动创建图形对象。对该对象执行操作(创建子图、绘制图像、添加颜色条)并通过在命令行中输入其名称随时显示内联图形。

    【讨论】:

    • 如何在示例中显然在单独的行中输入语句?此外,我无法以任何方式运行您的第二个示例。是否可以显式运行第一个示例,而不依赖于行顺序?
    • 这个例子在这方面有点草率。这些命令是正确的,但是在命令行中键入它们时,事情并不完全一样。我已经用更多示例更新了答案。虽然我不知道您所说的“取决于行顺序”是什么意思,但我希望您能在这些示例中找到您要寻找的内容:)
    猜你喜欢
    • 1970-01-01
    • 2018-03-19
    • 2012-09-01
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多