首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matplotlib上errorbar的Colorbar

matplotlib上errorbar的Colorbar
EN

Stack Overflow用户
提问于 2017-03-18 17:09:28
回答 1查看 924关注 0票数 2

我有一个一维数组,比如T。我有数据点(X,Y)要用误差条绘制,并用T进行颜色编码。

我将errorbar绘制为:

代码语言:javascript
复制
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()

这似乎不管用。说:

代码语言:javascript
复制
err must be [ scalar | N, Nx1 or 2xN array-like ]

对于plt.plot,如果我有N条曲线,每条曲线都有M个点,并且我必须用T对每条曲线进行颜色编码,(尺寸: XM,YN,TN)

我执行以下操作:

代码语言:javascript
复制
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()

此方案适用于plot!但似乎不适用于errorbar和1D数组。

然而,我不太确定这种比较有多好,因为在plot (2D)和errorbar (1D)的情况下,数组的维数是不同的。

编辑:

找到解决方案了。它与colorbar一点关系都没有。仅yerr数组就需要2XN数组。

因此yerr=[[Ei],[Ei]]修复了它。

EN

回答 1

Stack Overflow用户

发布于 2017-03-18 19:26:04

我仍然看不出有什么问题。用plt.errorbar替换plt.plot工作得很好:

代码语言:javascript
复制
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()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42872452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档