2016-04-25 8 views
0

Ich möchte Subplots in Matplotlib platzieren, so dass ich nicht weiß, wie viele Graphen es gibt (variable Anzahl von Graphen).Platzieren von Graphen in einem Landscape-Grid (eine Python-Challenge)

Die Rastermaße sind R * C, so dass R < = C ist und das Raster von links nach rechts und von oben nach unten gefüllt ist.

Die Herausforderung besteht darin, dass ich eine Funktion machen möchten, die ein Tupel von der Position zurückkehrt (r, c) für die Diagrammzahl n

Eine Probe Diagramm der benötigten Funktionen ist unten gezeigt, wo Gruppe darstellt n (r, c), dh die Anzahl n Ausgabe sollte das Tupel (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

Begrenzt auf 24, kann dies gelöst werden, indem ein Wörterbuch wie folgt platziert wird: '{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)} ' aber ich möchte diese Funktion wenn möglich verallgemeinern. –

Antwort

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)] 

die Zahlen addieren:

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

Gute Arbeit @ Peter9192. Danke, ich hoffe, ich könnte abstimmen, aber mein Ruf ist immer noch gering. –

Verwandte Themen