3

我试图在对数刻度上绘制以下数字作为 matplotlib 中的散点图。x 轴和 y 轴上的量都有非常不同的尺度,其中一个变量具有巨大的动态范围(大致接近 0 到 1200 万),而另一个变量则在接近 0 到 2 之间。我认为绘制可能会很好两者都在对数尺度上。

对于两个变量的值的子集,我尝试了以下操作:

fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(1, 1, 1)
ax.set_yscale('log')
ax.set_xscale('log')
plt.scatter([1.341, 0.1034, 0.6076, 1.4278, 0.0374],
        [0.37, 0.12, 0.22, 0.4, 0.08])

x 轴显示为对数缩放,但点未出现 - 仅出现两个点。知道如何解决这个问题吗?另外,如何使这个对数刻度出现在方轴上,以便可以从散点图中解释两个变量之间的相关性?

谢谢。

4

2 回答 2

3

我不知道为什么你只得到这两个点。对于这种情况,您可以手动调整限制以确保所有点都适合。我跑了:

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(8, 8)) # You were missing the =
ax = fig.add_subplot(1, 1, 1)
ax.set_yscale('log')
ax.set_xscale('log')
plt.scatter([1.341, 0.1034, 0.6076, 1.4278, 0.0374],
        [0.37, 0.12, 0.22, 0.4, 0.08])
plt.xlim(0.01, 10) # Fix the x limits to fit all the points
plt.show()

我不确定我是否理解“另外,我怎样才能让这个对数刻度出现在方轴上,以便可以从散点图中解释两个变量之间的相关性?” 方法。也许其他人会理解,或者您可以澄清一下?

于 2010-04-23T02:25:54.377 回答
2

你也可以这样做,

plt.loglog([1.341, 0.1034, 0.6076, 1.4278, 0.0374], 
                     [0.37, 0.12, 0.22, 0.4, 0.08], 'o')

这会产生您想要的带有适当缩放轴的图,尽管它不具备真正散点图的所有灵活性。

于 2010-04-23T04:59:36.110 回答