我有一个散点图,其中两个轴都是对数标度。例如,用以下代码生成的图:
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()
生成以下图Scatter plot with bisector
我想画对角线对应于10的每个幂,例如在下面的图Scatter plot with bisector and two diagonal lines中
我试着加上
ax.axline((1, 0), (10, 1), color="black", linestyle=":")
ax.axline((0, 1), (1, 10), color="black", linestyle=":")
但是我得到了Scatter plot with bisector and two lines,这不是我所期望的。
1条答案
按热度按时间1zmg4dgp1#
将Y坐标值乘以常数
我不确定你最初的想法(0,0)和(1,1)是不是理想的。在双对数图中最好避免0。我把它改成了(1,1)和(10,10),这是同一条线。
然后你想让下一条线穿过相同的X坐标,但是Y坐标要高出10倍,所以把两个Y坐标都乘以10。
另一边的线也是如此,除以10。
在这段代码中,我做了因子
k
。结果为:
为什么虚线与轴相交的位置有点低?
它们实际上在正确的位置相交。它们不应该在1,10,100等处与Y轴相交。Y轴 * 不是 * 在x=1处。它是在1稍微左边的某个数字处。
如果你在x=1处画一条线,穿过x=1,你会看到虚线穿过它们的交点。