我建議你使用PolyCollection:
import numpy as np
import pylab as pl
import matplotlib.collections as mc
x = np.logspace(1, 2, 20)
polys = []
values = []
for xs, xe in zip(x[:-1], x[1:]):
y = np.logspace(1.0, 2+np.random.rand()+2*np.log10(xs), 30)
c = -np.log(xs*y)
yp = np.c_[y[:-1], y[:-1], y[1:], y[1:]]
xp = np.repeat([[xs, xe, xe, xs]], len(yp), axis=0)
points = np.dstack((xp, yp))
polys.append(points)
values.append(c[:-1])
polys = np.concatenate(polys, 0)
values = np.concatenate(values, 0)
pc = mc.PolyCollection(polys)
pc.set_array(values)
fig, ax = pl.subplots()
ax.add_collection(pc)
ax.set_yscale("log")
ax.set_xscale("log")
ax.autoscale()
pl.colorbar(mappable=pc)
這裏是輸出:
你嘗試過這麼遠嗎?我會建議使用'plt.imshow'或'plt.pcolor'。 – wflynny
你可能想用'bar'和''''''kwarg +'color' kwarg。 http://matplotlib.org/examples/pylab_examples/bar_stacked.html – tacaswell
我不知道如何使用'pcolor'時,數據只佔據該圖的一部分,即不是一個完整的網格。 – lawrence721