我必须使用 matplotlib 库绘制几条“曲线”,每条曲线都由水平线段(甚至点)组成。
我达到了这个目标,用NaNs分隔各个部分。这是我的示例(工作)代码:
from pylab import arange, randint, hold, plot, show, nan, ylim, legend
n = 6
L = 25
hold(True)
for i in range(n):
x = arange(L, dtype=float) # generates a 1xL array of floats
m = randint(1, L)
x[randint(1, L, m)] = nan # set m values as NaN
y = [n - i] * len(x) # constant y value
plot(x, y, '.-')
leg = ['data_{}'.format(j+1) for j in range(n)]
legend(leg)
ylim(0, i + 2)
show()
(实际上,我从整数列表开始:在缺少整数的地方添加NaN )
问题:由于每一行都需要一个长度为L的数组,如果L很大,这个解决方案在内存方面可能会很昂贵,而必要和充分的信息是段的限制。
例如,对于由 2 段限制 (0, 500) 和 (915, 62000) 组成的一条线,最好执行以下操作:
niceplot([(0, 500), (915, 62000)], [(1, 1), (1, 1)])
(注意:这个 - 用plot而不是niceplot ... - 是一个工作代码,但它使其他东西......)
4*2 值而不是 62000*2... 有什么建议吗?
(这是我的第一个问题,请宽容^^)