首页 > 解决方案 > 如何根据您的值在 xticks 之间给出精确的间距

问题描述

在下面的代码中,我的 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()

标签: python

解决方案


您写的内容通常会起作用,尽管我不知道 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()

样本图


推荐阅读