在matplotlib中绘制细胞平均值而不是线图

时间:2016-01-27 11:07:34

标签: python matplotlib plot

给定一组n&#39;坐标,说x=[0, 1, 2, 3, 4]和n-1&#39;值&#39; y = [10, 20, 30, 40]我想绘制一个分段常数函数,该函数等于10,0 <0。 x <1,等于20,1 <&lt; 1。 x&lt; 2等

换句话说,x-list包含单元格边界的坐标,而y-list表示单元格内该函数的值。绘制此类数据的标准方法是什么?

我也对非常规网格和2d图感兴趣。

1 个答案:

答案 0 :(得分:2)

对于1d数据,您可以使用条形图。第一个参数是条形的中心,第二个参数是它们的高度。

x=np.asarray([0, 1, 2, 3, 4])
centers=(x[1:]+x[:-1])/2.0
plt.bar(centers,[10, 20, 30, 40],width=1)

barplot

对于二维数据,您可以使用pcolorcolorbar

# x coordinates of the cells
x=np.asarray([0, 1, 2, 3, 4])
# y coordinates of the cells
y=np.asarray([0,1,2])
# values inside the cells
c = np.asarray([[10, 20, 30, 40], [50,60,70,80]])

# plot the cells
plt.pcolor(x,y,c)
# plot a bar to match colors with values
plt.colorbar()

pcolor

要绘制非常规网格,pcolor可以将x和y的2d数组作为参数:您可以为每个单元格指定x和y坐标。
请注意,pcolormesh绘制的内容与pcolor相同,但更快,这可能很有用。