2016-09-16 6 views
2

Ich versuche, ein Diagramm zu erstellen, bei dem x-Achse eine geometrische Sequenz ist, während die y-Achse eine Zahl zwischen 0,0 und 1,0 ist. Mein Code sieht wie folgt aus:Wie man Xticks trotz ihres Wertes gleichmäßig verteilt macht?

form matplotlib import pyplot as plt 
plt.xticks(X) 
plt.plot(X,Y) 
plt.show() 

, die eine Handlung wie folgt erzeugt:

My plot

Wie Sie sehen können, ich ausdrücklich setze die x-Achse Zecken auf die Zugehörigkeit diejenigen der geometrischen Sequenz.

Meine Frage: Ist es möglich, X-Ticks trotz ihres Wertes gleichmäßig verteilt zu machen, da die ersten Terme der Sequenz klein und dicht gedrängt sind. Eine Art von logarithmischer Skala, die ideal wäre, wenn man sich mit den Kräften einer Basis beschäftigt, aber nicht für eine geometrische Sequenz, denke ich, wie es hier der Fall ist.

Antwort

2

Sie können dies tun, indem Sie Ihre Variable als Funktion der "natürlichen" Variablen auftragen, die Ihre Kurve parametrisiert. Zum Beispiel:

n = 12 
a = np.arange(n) 
x = 2**a 
y = np.random.rand(n) 

fig = plt.figure(1, figsize=(7,7)) 
ax1 = fig.add_subplot(211) 
ax2 = fig.add_subplot(212) 

ax1.plot(x,y) 
ax1.xaxis.set_ticks(x) 

ax2.plot(a, y) #we plot y as a function of a, which parametrizes x 
ax2.xaxis.set_ticks(a) #set the ticks to be a 
ax2.xaxis.set_ticklabels(x) # change the ticks' names to x 

die produziert:

enter image description here

+0

löste ich es ähnlich pyplot.axes.set_xticks() und pyplot.axes.set_xlabels() verwendet. Ich hatte vor, meine eigene Frage zu beantworten, aber Sie haben hier eine gute Antwort gegeben, viel besser, als ich geschrieben hätte. Vielen Dank. – rahul1210

Verwandte Themen