2016-10-27 3 views
0

ich eine Handlung basiert auf einer numpy Array am Zeichnung:Ändern der Achsenskalierung in numpy Grundstück

A = np.array([[4,5,6],[2,3,6]]) 

mit plt.plot (A) es funktioniert gut und Ziehungen basierend auf 6 Tupel: (0,4) , (1,5), (2,6), (0,2) usw.

Ich möchte aber die X-Achse skalieren. Die Geräte sollten also durch 120 geteilt werden, wir plotten möchten:

(0,4), (1/120,5), (2/120, 6), etc. 

Gibt es eine einfache Möglichkeit, es zu tun, ohne die Array Looping und manuell die Tupel auf das Grundstück Fütterung?

+0

Sind Sie sicher, dass 'plt.plot (A)' wie das funktioniert? – kameranis

+0

Es zeichnet in jedem Fall eine Linie zwischen diesen Tupeln. – dorien

+0

Ich habe diese http://stackoverflow.com/questions/34080270/matplotlib-scale-axis-by-multiplying-with-a-constant gelesen und es scheint, als ob ich eine neue Matrix mit den x-Achsen-Koordinaten – dorien

Antwort

2

Geben Sie die x-Achse

scaling_factor = 120. 
x = np.arange(A.shape[0])/scaling_factor 
plt.plot(x, A) 
+0

'A.form [1]' wahrscheinlich? – Divakar

+0

Nun ... ich dachte mir selbst, aber als ich es tat, beklagte 'plt'' ValueError: x und y müssen dieselbe erste Dimension haben. Ich vermute, dass etwas nicht stimmt. Entweder der 'plt.plot (A)' oder die Punkte, die uns der OP gegeben hat. – kameranis

+0

Oder mit 'A.shape [1]' und dann 'plt.plot (A, x)' vielleicht? – Divakar

0
import numpy as np 
A = np.array([4,5,6],[2,3,6]) 

Dies scheitert! Was ist dein tatsächlicher Code?

Auf jeden Fall haben Sie versucht, die X-Werte explizit zu plt.plot Bereitstellung():

x = np.arange(3)/120 
plt.plot(x, whatever) 
+0

Es gibt tatsächlich 2 Punkte in jedem Diagramm, also 'x = np.arange (2)/120." Ihr 'x' ist voll von Nullen, weil Integer-Division. Deshalb fügen Sie '.' am Ende hinzu, um es zu einem Float zu machen. – kameranis

+0

Danke. A [] fehlte. Mein ursprünglicher Code liest tatsächlich das np-Array aus einer riesigen Datei ein. – dorien

+0

@kameranis Python3 ist seit 8 Jahren nicht mehr verfügbar und benötigt keine. um eine ganzzahlige Division zu verhindern. – Balzola