2016-04-25 41 views
0

我想在matplotlib中放置subplots,这样我就不知道有多少个图(可变数量的图)。在横向网格中放置图(蟒蛇挑战)

网格尺寸是R * C,因此R < = C,并且网格从左到右和从上到下填充。

的挑战是,我想使返回的位置的元组(R,C),用于在图表数量n

的需要的功能的示例图所示,其中基团代表N(A功能R,C),即数目n应该输出元组(R,C)

sample 
0(0, 0) 1(0, 1) 4(0, 2) 9(0, 3) 16(0, 4) 
2(1, 0) 3(1, 1) 5(1, 2) 10(1, 3) 17(1, 4) 
6(2, 0) 7(2, 1) 8(2, 2) 11(2, 3) 18(2, 4) 
12(3, 0) 13(3, 1) 14(3, 2) 15(3, 3) 19(3, 4) 
20(4, 0) 21(4, 1) 22(4, 2) 23(4, 3) 24(4, 4) 
+0

限制为24,这可以通过放置如下字典来解决:'{0:(0,0),1:(0,1),4:(0,2),9:(0,3),16 :(1,0,4),2:(1,0),3:(1,1),5:(1,2),10:(1,3),17:(1,4),6:( 2:0),7:(2,1),8:(2,2),11:(2,3),18:(2,4), 12:(3,0),13:(3 ,1),14:(3,2),15:(3,3),19:(3,4),20:(4,0),21:(4,1),22:(4,2 ),23:(4,3),24:(4,4)}' 但我想泛化这个函数,如果可能的话。 –

回答

1
x = 0 
y = 0 
print (x,y) 
for i in range(1,5): 
    y = i 
    print [(x,y) for x in range(i)] 
    x = i 
    print [(x,y) for y in range(i+1)] 

要添加的数字:

tuples=[] 

x = 0 
y = 0 
n = 0 
tuples.append((n,(x,y))) 
for i in range(1,5): 
    y = i 
    for x in range(i): 
     n+=1 
     tuples.append((n,(x,y))) 
    x = i 
    for y in range(i+1): 
     n+=1 
     tuples.append((n,(x,y))) 

print tuples 
+0

Good job @ Peter9192。 谢谢,我希望我能投票,但是我的声望还是很低。 –