python – 将值映射到matplotlib中的颜色
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 将值映射到matplotlib中的颜色,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1831字,纯文字阅读大概需要3分钟。
内容图文
我有一个数字列表如下:
lst = [1.9378076554115014, 1.2084586588892861, 1.2133096565896173,
1.2427632053442292, 1.1809971732733273, 0.91960143581348919,
1.1106310149587162, 1.1106310149587162, 1.1527004351293346,
0.87318084435885079, 1.1666132876686799, 1.1666132876686799]
我想将这些数字转换为颜色以供显示.
我想要灰度,但当我使用这些数字时,它给了我一个错误:
ValueError: to_rgba: Invalid rgba arg "1.35252299785"
to_rgb: Invalid rgb arg "1.35252299785"
gray (string) must be in range 0-1
…我明白是因为它超过了1.
我接下来试图将列表中的项目除以列表中的最大数字,以给出小于1的值.但是这给出了非常窄的颜色标度,几乎没有值之间的任何差异.
有什么方法可以给出一些最小和最大范围的颜色并将这些值转换为颜色?我正在使用matplotlib.
解决方法:
matplotlib.colors模块正是您所需要的.这提供了许多类,可以从值映射到colourmap值.
import matplotlib
import matplotlib.cm as cm
lst = [1.9378076554115014, 1.2084586588892861, 1.2133096565896173, 1.2427632053442292,
1.1809971732733273, 0.91960143581348919, 1.1106310149587162, 1.1106310149587162,
1.1527004351293346, 0.87318084435885079, 1.1666132876686799, 1.1666132876686799]
minima = min(lst)
maxima = max(lst)
norm = matplotlib.colors.Normalize(vmin=minima, vmax=maxima, clip=True)
mapper = cm.ScalarMappable(norm=norm, cmap=cm.Greys_r)
for v in lst:
print(mapper.to_rgba(v))
一般方法是在数据中找到最小值和最大值.使用这些来创建Normalize实例(其他规范化类可用,例如对数比例).接下来,使用Normalize实例和您选择的colormap创建ScalarMappable.然后,您可以使用mapper.to_rgba(v)从输入值v(通过标准化比例)映射到目标颜色.
for v in sorted(lst):
print("%.4f: %.4f" % (v, mapper.to_rgba(v)[0]) )
产生输出:
0.8732: 0.0000
0.9196: 0.0501
1.1106: 0.2842
1.1106: 0.2842
1.1527: 0.3348
1.1666: 0.3469
1.1666: 0.3469
1.1810: 0.3632
1.2085: 0.3875
1.2133: 0.3916
1.2428: 0.4200
1.9378: 1.0000
如果需要,matplotlib.colors module documentation有更多信息.
内容总结
以上是互联网集市为您收集整理的python – 将值映射到matplotlib中的颜色全部内容,希望文章能够帮你解决python – 将值映射到matplotlib中的颜色所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。