擅长:python、mysql、java
<p>你要找的是一个以2为底的对数刻度。<code>matplotlib</code>提供对数标度,您可以定义任意基数:</p>
<pre><code>from matplotlib import pyplot as plt
from matplotlib.ticker import ScalarFormatter
#sample data
x = list(range(1, 130))
y = list(range(3, 260, 2))
f, ax1 = plt.subplots(1,1,figsize=(16,7))
x1 = [ 1, 2, 4, 8, 16, 32, 64, 128]
y1 = [y[0],y[1],y[3],y[7],y[15],y[31],y[63],y[127]]
#just the points, where the ticks are
ax1.plot(x1, y1,"bo-", label = "Performance")
#all other points to contrast this
ax1.plot(x, [270 - i for i in y], "rx-", label = "anti-Performance")
#transform x axis into logarithmic scale with base 2
plt.xscale("log", basex = 2)
#modify x axis ticks from exponential representation to float
ax1.get_xaxis().set_major_formatter(ScalarFormatter())
ax1.set_xlabel('Time Period',fontsize=15)
ax1.set_ylabel("Value",color='b',fontsize=15)
plt.legend()
plt.show()
</code></pre>
<p>输出:</p>
<p><a href="https://i.stack.imgur.com/xW0Ut.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/xW0Ut.jpg" alt="enter image description here"/></a></p>