ImportError: cannot import name ‘parula‘ from ‘<unknown module name>‘ (unknown location)解决及cmap正确使用

一 python版本

           python  3.9.3

二 问题描述

  在学习Python绘图编程时,遇到一段源编程:

import numpy as np
import matplotlib.pyplot as plt
from colormaps import parula
np.random.seed(19680801)
plt.subplot(211)
plt.imshow(np.random.random((100,100)),cmap=parula)
plt.subplot(212)
plt.imshow(np.random.random((100,100)),cmap=parula)

  书上给出运行结果为:



但是,在自己机器上测试,运行不通过,提示为

三 问题分析

  不难发现,源程序开始调用parula的关键用意在于帮助后面程序里的imshow()函数的使用。如果清楚该函数功用,就可能对解决问题有帮助。
   imshow() 函数定义如下:
imshow(X, cmap=None, norm=None, aspect=None,
interpolation=None, alpha=None, vmin=None, vmax=None,
origin=None, extent=None, shape=None, filternorm=1,
filterrad=4.0, imlim=None, resample=None, url=None, **kwargs)
   X:可以使类似数组的对象,或者是PIL类型图像,其中,数组对象可选shape为:(1)(M, N)二维数组,元素是标量数据。(2)(M, N, 3)RGB三通道图像,取值范围为0−1之间float或者0−255之间int。(3)(M, N, 4)RGBA图像,多出一维属性,透明度,其元素值和3通道的一样,取值范围为0−1之间float或0−255之间int。
  cmap:str 或 matplotlib.colors.Colormap类型,用于将标量数据映射到颜色的Colormap实例或已注册的Colormap名称。因此,对应的语法有两种方式:
(1)cmap=‘色带名称’(注意,用cmap时,需要加上引号)或者(2)plt.cm.色带名称。

四 解决措施

   通过imshow()函数的了解,不难得到一下的解决方案:
  1 删掉:from colormaps import parula。
  2 如果需要某种色带,找到其对应的映射名称,如pink ,则将原程序中的cmap=‘ parula ’修改为plt.cm.pink或者cmap='pink’即可。全部的色带定义可参见https://matplotlib.org/网站。
  3 通过https://matplotlib.org/网站可以看到,没有对应的 parula色带。后来查找资料发现:parula是matlab中对应的术语,而在python调用中,对应的是第一位,默认状态,用None表示。所以,直接将cmap=parula删掉,或者改写为cmap=None均可。

五 程序修改与测试

  1 测试程序代码(请注意,实现子图相同功能的四种不同语法表述):

  import numpy as np
  import matplotlib.pyplot as plt
  np.random.seed(19680801)
  plt.subplot(221)
  plt.imshow(np.random.random((100, 100)),plt.cm.pink )
  plt.subplot(222)
  plt.imshow(np.random.random((100, 100)),cmap='plasma' )
  plt.subplot(223)
  plt.imshow(np.random.random((100, 100)), )
  plt.subplot(224)
  plt.imshow(np.random.random((100, 100)),cmap=None )

  2 测试结果

  可以看出,后面两个子图和原书上显示结果一致,问题得以解决。

六 附录:配色映射表

  参考https://matplotlib.org/网站中的:文章:Choosing Colormaps in Matplotlib。网址为:https://matplotlib.org/stable/tutorials/colors/colormaps.html#sphx-glr-tutorials-colors-colormaps-py。这里将网址里面的色带映射图摘录如下,以方便大家参考:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值