对数的应用很广泛,当 x x x 或 y y y 或两者出现大范围的变化时,你既不可能把坐标轴拉得很长很长,又不能取大单位(因为小范围的情况就会看不到)。将坐标轴做一下对数函数的变换,事物的本质很可能会一下子暴露 。
比如,当 0 < x < 10000 0<x< 10000 0<x<10000时, y = l g ( x 2 ) y=lg(x^2) y=lg(x2) 这个函数,直接画图像,会出现这种情况:
我们知道
10000
10000
10000 对上去是
8
8
8 ;
1000
1000
1000 对上去是
6
6
6 ;
1000
1000
1000 以下的情况我们实在不知道。在scipy.stats中使用sts这个命令,可以使
x
x
x 采用对数标度,
y
y
y 轴仍保持线性标度。
从这个图可以看到,函数
y
=
l
g
(
x
2
)
y=lg(x^2)
y=lg(x2) 本质上是一个线性函数。
2.利用python绘制对数坐标
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as sts
if __name__ == '__main__':
a = 0.031 / 10000 + 0.0337 / 10000
print(0.0336 * 100 / np.sqrt(a)) # 1320.95
r = sts.lognorm.rvs(0.954, size=1000)
c = plt.hist(r, bins=500)
plt.show()
# 双对数坐标下
fig, ax = plt.subplots()
ax.set_xscale("log")
ax.set_yscale("log")
ax.set_adjustable("datalim")
ax.plot(c[1][:-1], c[0], 'o')
ax.set_xlim(1e-1, 1e6)
ax.set_ylim(1e-2, 1e6)
ax.grid()
plt.draw()
plt.show()
# 半对数坐标
fig1, ax1 = plt.subplots()
ax1.hist(r, bins=500)
ax1.set_xscale("log")
ax1.set_xlim(1e-1, 1e6)
ax1.grid()
plt.draw()
plt.show()
正常坐标
双对数坐标
半对数坐标
参考链接:
[1] 对数坐标 2022.6
[2] 对数坐标怎么理解 2022.2
[3] python画对数与半对数坐标 2019.5