我有一个数量的一维数组,比如T.我有数据点(X,Y)用错误栏绘制并用T进行颜色编码。
我正在绘制错误栏:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.pylab as pylab
import matplotlib
X = np.linspace(0, 10, 50)
Y = np.random.normal(0, 1, 50)
E = np.random.normal(0, 0.1, 50)
norm = matplotlib.colors.Normalize(vmin=0, vmax=0.5)
c_m = matplotlib.cm.jet
s_m = matplotlib.cm.ScalarMappable(cmap=c_m, norm=norm)
s_m.set_array([])
plt.figure()
for i in range(0, len(Y)):
plt.errorbar(X[i], Y[i], color=s_m.to_rgba(E[i]), yerr=[E[i], E[i]], capsize=3, ls='none')
plt.grid()
plt.show()
这似乎不起作用。说:
err must be [ scalar | N, Nx1 or 2xN array-like ]
对于plt.plot,如果我说N条曲线,每条曲线都有M点,我必须用T对每条曲线进行颜色编码,(尺寸:X [M],Y [N] [M],T [N] )
我执行以下操作:
norm = matplotlib.colors.Normalize(
vmin=0,
vmax=32)
# choose a colormap
c_m = matplotlib.cm.jet
# create a ScalarMappable and initialize a data structure
s_m = matplotlib.cm.ScalarMappable(cmap=c_m, norm=norm)
s_m.set_array([])
plt.figure()
for i in range(0, N):
plt.plot(X, Y[i], color=s_m.to_rgba(T[i]))
plt.grid()
plt.show()
此方案适用于情节!但似乎不适用于errorbar和1D数组。
然而,由于数组尺寸在绘图(2D)和误差条(1D)情况下不同,我不确定比较是多好。
编辑:
得到了解决方案。它完全与colorbar无关。只是那个yerr数组需要2XN阵列。
因此yerr = [[E [i]],[E [i]]]修正了它。
答案 0 :(得分:1)
我仍然没有看到问题。用plt.plot
替换plt.errorbar
工作正常:
import matplotlib.pyplot as plt
import matplotlib.colors
import matplotlib.cm
import numpy as np
N=3
x=np.arange(10)
Y = np.random.rand(len(x),N)
a = np.ones_like(x)*0.1
T = np.array([5,12,27])
plt.figure()
norm = matplotlib.colors.Normalize(vmin=0,vmax=32)
# choose a colormap
c_m = matplotlib.cm.jet
# create a ScalarMappable and initialize a data structure
s_m = matplotlib.cm.ScalarMappable(cmap=c_m, norm=norm)
s_m.set_array([])
for i in range(0, N):
plt.errorbar(x, Y[:,i], yerr=[a,a], color=s_m.to_rgba(T[i]), capsize=3, ls='none')
plt.grid()
plt.grid()
plt.show()