如何根据您的值在xticks之间给出精确的间距

时间:2019-04-11 20:17:33

标签: python

在下面的代码中,我的alpha值的范围为10 ^ -5到10 ^ 5,间距为10 ^ 1,所以我想绘制从10 ^ -5到10 ^ 5的精确xticks,差值为10 ^ 1

这是我尝试过的

alpha=[0.000001,0.00001,0.0001,0.001,0.001,0.1,1,10,100,1000,10000]
plt.figure(figsize=(8,6))
plt.subplots_adjust(left=.2, right=0.95, bottom=0.15, top=0.65)
sns.lineplot(param_bow["param_alpha"],param_bow["mean_train_score"],label="Grid_train score")
plt.grid()
plt.xlabel("alpha")
plt.ylabel("Accuracy score")
plt.xticks(alpha)
plt.title("Graph for auc train scores on BOW")
plt.show()

1 个答案:

答案 0 :(得分:0)

尽管我不知道什么是sns,但是您写的内容通常可以使用。您将要遇到的主要问题是x值(即您所称的alpha)是以指数方式间隔的。也就是说,早期的值彼此非常接近,以至于它们会重叠,而晚期的值则非常大,它们将独立存在。因此,只需在x轴上使用对数刻度即可。

(您在alpha中也有一个重复的值,重复0.001两次。实际上,您从10 ^ -5到10 ^ 5并没有。它们不是也不能以10 ^ 1隔开。打算从-10 ^ 5变为10 ^ 5?那是唯一有意义的间距,无论如何,考虑在将来使用列表推导算法来创建它。在下面的示例中,我复制了您实际使用的范围,而不是您打算使用的那个。)

import matplotlib.pyplot as plt

# [0.000001, 0.00001, 0.0001, 0.001, 0.01, 0.1, 1, 10, 100, 1000, 10000]
xvalues = [10**i for i in range(-6, 5)]
data = range(len(xvalues))  # sample throwaway data
plt.plot(xvalues, data)
plt.xscale('log')
plt.xticks(xvalues)
plt.show()

sample plot