matplotlib上errorbar的Colorbar

2024-04-24 05:38:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个1D数组来表示某个量,比如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()

这似乎行不通。说:

^{pr2}$

为plt.绘图每一条曲线都有T,M,N,如果每一条曲线都有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数组。在

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

编辑:

找到解决办法了。它与colorbar完全无关。只是那个yerr数组需要2XN数组。在

因此,yerr=[[E[i]],[E[i]]]修复了它。在


Tags: importnormmatplotlibasnp绘制cmplt
1条回答
网友
1楼 · 发布于 2024-04-24 05:38:32

我还是看不出问题。将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()

enter image description here

相关问题 更多 >