matplotlib 将xticks显示为对数-对数刻度的整数

2o7dmzc5  于 2023-05-23  发布在  其他
关注(0)|答案(1)|浏览(194)

我正试图用我已有的数据复制下面的散点图。该图以双对数标度(黑点)绘制F_n与n,但x轴和y轴代表实际数字,而不是10的幂。蓝线是最佳拟合线,可以忽略。基于this问题的答案,我尝试使用ScalarFormatter和tick格式的API来形成x轴,但我无法获得正确的格式来显示任意数字,如(2,5,20,50)。此外,如何选择y轴的刻度,我尝试了LogLocator,但它也不起作用。

欢迎任何帮助或建议。感谢您的评分

7hiiyaii

7hiiyaii1#

实现这一点的一种方法是使用xticksyticks。下面是一个例子:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(1, 200)
y = 0.1 * (x / x[0])**(np.log10(1e-07/0.1) / np.log10(x[-1]/x[0]))

plt.figure()
plt.plot(x, y)
plt.xscale("log")
plt.yscale("log")
plt.xticks([1, 2, 5, 10, 20, 50, 100, 200], [1, 2, 5, 10, 20, 50, 100, 200])
plt.yticks([0.01, 1e-04, 1e-06], [0.01, "1e-04", 1e-06])
plt.minorticks_off()
plt.show()

相关问题