2017-05-20 8 views
2

Ich habe die folgenden Punktepaare, die ich mit einer logarithmischen Skala zeichnen möchte.Logarithmische Skala mit Basis 2

import matplotlib.pyplot as plt 
f, ax = plt.subplots(1) 
xdata = [256, 512, 1024, 2048] 
ydata = [1, 2, 30, 150] 
ax.scatter(xdata, ydata) 
ax.set_ylim(ymin=0) 
ax.set_xlim(xmin=0) 
plt.show(f) 

enter image description here

die Punkte machen, aber ich weiß nicht, wie mit der Basis 2 auf beiden Achsen die Skala logarithmisch zu machen. Ich möchte, dass jedes Inkrement den Wert z.B. x Inkremente sollten 0, 256, 512, 1024, 2048 (Bytes) sein und y Inkremente sollten Minuten sein, in denen die Daten jetzt in Sekunden sind: 0, 1, 2, 4, 8, 16, 32.

Kann es sein getan werden?

Antwort

4

Was Sie wollen ist eine logarithmische Skala (eher als exponentiell). Ich denke, das ist der Grund, warum Sie die Antwort selbst nicht gefunden haben, sonst könnten Sie leicht auf die corresponding matplotlib example gelangen.

Folgendes sollte funktionieren (die einzige Abweichung von Ihren Anforderungen ist, dass die Achsen Etiketten in Form von 2 n eher als ganze Zahlen):

import matplotlib.pyplot as plt 
f, ax = plt.subplots(1) 
xdata = [256, 512, 1024, 2048] 
ydata = [1, 2, 30, 150] 
plt.xscale('log', basex=2) 
plt.yscale('log', basey=2) 
ax.scatter(xdata, ydata) 
ax.set_ylim(ymin=0) 
plt.show(f)