我有一个散点图,其中两个轴都是对数刻度。例如,使用以下代码生成的图:
import matplotlib.pyplot as plt
import numpy as np
rng = np.random.RandomState(42)
x = np.logspace(0, 3, 100)
y = np.logspace(0, 3, 100) + rng.randn(100) * 2
ax = plt.gca()
ax.scatter(x, y, marker="x", color="orange")
ax.axline((0, 0), (1, 1), color="black", linestyle=":")
ax.set_xscale("log")
ax.set_yscale("log")
ax.set_aspect("equal")
plt.show()
我试着补充
ax.axline((1, 0), (10, 1), color="black", linestyle=":")
ax.axline((0, 1), (1, 10), color="black", linestyle=":")
我不确定您最初对 (0,0) 和 (1,1) 的想法是否理想。最好避免在双对数图中出现 0。我已将其更改为 (1,1) 和 (10,10),这是同一行。
然后你希望你的下一条线通过相同的 X 坐标,但在 Y 坐标处,比方说,高 10 倍。所以将两个 Y 坐标乘以 10.
另一边的线也一样,除以 10.
在这段代码中,我做了因子
k
.
import matplotlib.pyplot as plt
import numpy as np
rng = np.random.RandomState(42)
x = np.logspace(0, 3, 100)
y = np.logspace(0, 3, 100) + rng.randn(100) * 2
ax = plt.gca()
ax.scatter(x, y, marker="x", color="orange")
k = 10
ax.axline((1, 1), (10, 10 ), color="black", linestyle=":")
ax.axline((1,1*k), (10, 10*k), color="black", linestyle=":")
ax.axline((1,1/k), (10, 10/k), color="black", linestyle=":")
ax.set_xscale("log")
ax.set_yscale("log")
ax.set_aspect("equal")
plt.show()