How to make xticks evenly spaced despite their value?
<p>I am trying to generate a plot with x-axis being a geometric sequence while the y axis is a number between 0.0 and 1.0. My code looks like this:</p>

<pre><code>form matplotlib import pyplot as plt
plt.xticks(X)
plt.plot(X,Y)
plt.show()
</code></pre>

<p>which generates a plot like this:</p>

<p><a href="http://i.stack.imgur.com/Ia6Wf.jpg" rel="nofollow"><img src="http://i.stack.imgur.com/Ia6Wf.jpg" alt="My plot"></a></p>

<p>As you can see, I am explicitly setting the x-axis ticks to the ones belonging to the geometric sequence. </p>

<p>My question:Is it possible to make x-ticks evenly spaced despite their value, as the initial terms of the sequence are small, and crowded together. Kind of like logarithmic scale, which would be ideal if dealing with powers of a base, but not for a geometric sequence, I think, as is the case here.</p>

<p>You can do it by plotting your variable as a function of the "natural" variable that parametrizes your curve. For example:</p>

<pre><code>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
</code></pre>

<p>which produces:</p>

<p><a href="http://i.stack.imgur.com/LP3UM.png" rel="nofollow"><img src="http://i.stack.imgur.com/LP3UM.png" alt="enter image description here"></a></p>

python matplotlib plot