python - 根据颜色图在 2D 中颜色误差条
问题描述
乍一看,这是一个相当简单的问题,但我一直无法找到解决方案。这里有一个类似的(旧)问题,但给出的最接近的答案似乎不适用于两个维度的误差线。
我需要生成一个“误差线”图,其中两个误差线(在 x 和 y 维度中)根据cc
数组中的值进行着色。
编码:
import numpy as np
import matplotlib.pyplot as plt
# Some random data
aa = np.array([3.581, -0.721, 0.137, 0.645, 0.12, 0., -3.236, 0.248, -5.687, 0.816])
e_aa = np.array([0.111, 0.991, 0.446, 0.07, 0.814, 0., 0.088, 0.805, 0.178, 0.552])
bb = np.array([6.671, 1.219, 0.119, -1.972, 1.834, 0., 4.93, 1.833, -11.542, -0.439])
e_bb = np.array([0.143, 1.316, 0.609, 0.094, 1.127, 0., 0.116, 1.227, 0.216, 0.726])
# The color array
cc = np.array([0.50344083, 0.49961867, 0.5055576, 0.48970365, 0.5078516, 0.49643923, 0.50089907, 0.50129157, 0.49627974, 0.5052376])
plt.errorbar(aa, bb, yerr=e_bb, xerr=e_aa, fmt='none', ecolor=cc)
plt.show()
失败:
ValueError: Invalid RGBA argument: 0.50344083
无论我使用ecolor
orcolor
论点。
有没有办法解决?
解决方案
我找到了解决方案。诀窍是使用matplotlib.cm
.
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.colors import Normalize
# Some random data
aa = np.array([3.581, -0.721, 0.137, 0.645, 0.12, 0., -3.236, 0.248, -5.687, 0.816])
e_aa = np.array([0.111, 0.991, 0.446, 0.07, 0.814, 0., 0.088, 0.805, 0.178, 0.552])
bb = np.array([6.671, 1.219, 0.119, -1.972, 1.834, 0., 4.93, 1.833, -11.542, -0.439])
e_bb = np.array([0.143, 1.316, 0.609, 0.094, 1.127, 0., 0.116, 1.227, 0.216, 0.726])
# The color array
cc = np.array([0.50344083, 0.49961867, 0.5055576, 0.48970365, 0.5078516, 0.49643923, 0.50089907, 0.50129157, 0.49627974, 0.5052376])
# Define function to map (normalized) values in `cc` to a colormap
cmap = cm.viridis
norm = Normalize(vmin=cc.min(), vmax=cc.max())
plt.errorbar(aa, bb, yerr=e_bb, xerr=e_aa, fmt='none', ecolor=cmap(norm(cc)))
plt.show()
推荐阅读
- google-admin-sdk - 使用 curl 对 Gsuite 用户进行身份验证的 URL 是什么?
- bash - 带有字符串的 bash if 语句总是计算为真
- c# - 打开另一个表单后如何关闭现有表单?
- tensorflow-serving - 将元数据添加到 tensorflow 服务 api 调用
- javascript - 按钮点击计数器
- c# - 从两个排序数组中获取前 K 项而不合并它们
- r - R - 将 system() 的输出捕获到 txt 文件。
- string - htaccess 文件中的 ^(.*)$ 与 ^([a-zA-Z0-9])$
- php - Laravel + Beanstalkd:无法启动
- azure - 在 Azure 应用服务部署任务中设置 XML 转换环境