python - 如何根据您的值在 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()
解决方案
您写的内容通常会起作用,尽管我不知道 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()
推荐阅读
- java - Kafka:如何使用 Java API 从主题中删除记录?
- java - 如何使用appium在移动应用程序中自动支付卡?
- javascript - Angular js 错误:$parse:syntax 语法错误
- .htaccess - 301 重定向在目标 url 的末尾添加了一个额外的单词
- php - 使用数组通过php发送短信
- pentaho - Pentaho 转换“执行 SQL 语句”与“表输入”步骤
- r - 使用 r 将名为 Natco 的新列添加到合并的 excel 文件中
- java - MySQL 8.0.11 抛出 CLIENT_PLUGIN_AUTH 是必需的
- azure - 如何拒绝订阅级别贡献者角色对 Azure 中特定资源组的访问
- perl - 使用 PERL 将 KB、MB、GB、TB 转换为 KB