错误栏& colorbars python

时间:2015-10-18 20:39:02

标签: python matplotlib plot colorbar errorbar

我想绘制一个散点图,它有一个颜色条,数据有错误栏。这是我的代码:

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(123)

x = np.linspace(0.1, 100, 10)
y = np.linspace(6, 18, 10)
yerr = np.random.random(10)
z = np.linspace(0, 10, 10)

plt.scatter(x, y, s = 20, c = z)
plt.colorbar()
plt.errorbar(x, y, yerr = yerr, fmt = '.')

这是情节: enter image description here

但是,错误栏以蓝色绘制。我想根据颜色栏绘制它们,我该怎么做?例如,如果某个点的值为10,则应在red中绘制错误栏。

修改

按照下面的建议,我写道:

cmap = matplotlib.cm.get_cmap('jet')
norm = matplotlib.colors.Normalize(vmin=min(y), vmax=max(y))

plt.scatter(x, y, s = 20, c=z, cmap=cmap)
plt.colorbar()
plt.errorbar(x, y, yerr = yerr, fmt = '.', c=cmap(norm(y)))

但是,它仍然没有用。有什么建议吗?

我仍然有兴趣得到这个问题的答案。任何人吗?

1 个答案:

答案 0 :(得分:2)

您可以使用色彩图为您的错误栏着色,但您可能希望规范化您发送的值:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib

np.random.seed(123)

x = np.linspace(0.1, 100, 10)
y = np.linspace(6, 18, 10)
yerr = np.random.random(10)
z = np.linspace(0, 10, 10)

cmap = matplotlib.cm.get_cmap('jet')
norm = matplotlib.colors.Normalize(vmin=min(y), vmax=max(y))

plt.scatter(x, y, s = 20, c=z, cmap=cmap)
plt.colorbar()
plt.errorbar(x, y, yerr = yerr, fmt = '.', c=cmap(norm(y)))