如何使xticks均匀分布而不管其价值?
问题内容:
我正在尝试生成一个图,其中x轴是几何序列,而y轴是介于0.0和1.0之间的数字。我的代码如下所示:
form matplotlib import pyplot as plt
plt.xticks(X)
plt.plot(X,Y)
plt.show()
生成如下图:
如您所见,我将x轴刻度线明确设置为属于几何序列的刻度线。
我的问题是:是否有可能使x-
ticks均匀分布,因为它们的值很小,因为序列的初始项很小并且很拥挤。我认为这有点像对数刻度,如果处理基数的幂,那将是理想的选择,但对于几何序列而言,这不是最理想的选择,就像这里的情况。
问题答案:
您可以通过将变量绘制为参数化曲线的“自然”变量的函数来进行绘制。例如:
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
产生: