【问题标题】:problem plotting on logscale in matplotlib in pythonpython中matplotlib中对数刻度的问题
【发布时间】:2010-04-23 01:18:53
【问题描述】:

我正在尝试在对数刻度上绘制以下数字作为 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 轴显示为对数缩放,但点未出现 - 仅出现两个点。知道如何解决这个问题吗?另外,如何使这个对数刻度出现在方轴上,以便可以从散点图中解释两个变量之间的相关性?

谢谢。

【问题讨论】:

    标签: python numpy scipy plot graphing


    【解决方案1】:

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

    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()
    

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

    【讨论】:

    • 方轴只是表示 x 和 y 的两个刻度对齐...这在制作散点图时很常见。您不希望 x 轴比 y“长”,这会使绘图成为矩形而不是方形......我希望对数刻度轴也一样。那有意义吗?谢谢。
    • 您可以将 y 限制设置为与 x 限制相同,例如 plt.ylim(0.01, 10)(或自动)。这与您的 figsize=(8, 8) 一起应该会达到预期的效果。
    【解决方案2】:

    你也可以这样做,

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

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

    【讨论】:

      猜你喜欢
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 2018-11-22
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 2014-03-22
      相关资源
      最近更新 更多