我应该得到16条单独的行,但是第一行的端点跟踪并遇到下一行的起点。我该如何解决?
a = []
b = []
x = 0
for i in range(1,17):
for x in range(0,5):
y=x+i
a.append(x)
b.append(y)
fig= plt.figure()
axes=fig.add_subplot(111)
pylab.plot(a, b, '-b')
答案 0 :(得分:1)
问题是您试图绘制16条线,但是将它们全部添加到一个列表中。解决方案是每次初始化空列表,然后在for循环中的内部中绘制空列表,以便将每个列表绘制为单行。
在这种情况下,您只能在for循环外仅定义一次该数字。
在下面的答案中,我正在删除您不需要的东西。对于前。 23:59
和x=0
。我正在用另一个变体替换此命令。
完整的工作答案:
axes=fig.add_subplot(111)
简单版本
您可以通过使用numpy数组来简化整个代码
import matplotib.pyplot as plt
fig, ax = plt.subplots(figsize=(8,6))
for i in range(1,17):
a = []
b = []
for x in range(0,5):
y=x+i
a.append(x)
b.append(y)
plt.plot(a, b, '-b')
plt.show()
答案 1 :(得分:1)
由于您的x
值始终相同,因此可以将它们作为1D数组传递,而将y
值作为2D数组传递。 matplotlib
将自动处理颜色:
x = np.linspace(0,5,10)
y0 = i0 = np.arange(17)
y = y0[:,None]+x
plt.plot(x,y.T)
plt.show()
提供此图片:
答案 2 :(得分:0)
在将所有答案附加到一个列表中时,它假定所有线路都已连接。您可以尝试将a和b的大小固定为5,然后在每次进行内部for循环之后绘制16条线中的每条线。
for i in range(1,17):
for x in range(0,5):
y=x+i
a.append(x)
b.append(y)
pylab.plot(a, b, '-b')
a=[]
b=[]
fig= plt.figure()
axes=fig.add_subplot(111)
pylab.show()