我需要使用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()
(actually, 我从一组整数开始: NaNs会被添加在整数缺失的位置之后) 问题: 由于每行需要一个长度为L的数组,如果L很大,则此解决方案在内存方面可能很昂贵,而必要和充分的信息是段的限制。
例如,对于由限制为(0,500)和(915,62000)的2个段组成的一行,做类似这样的事情会很好:
niceplot([(0, 500), (915, 62000)], [(1, 1), (1, 1)])
(注:这个-用plot代替niceplot...-是一个工作代码,但它会产生其他问题...)
而不是62000*2,使用4*2的值... 有什么建议吗?
(这是我的第一个问题,请多多包涵^^)
hlines
函数。 - Warren Weckesser