【问题标题】:How do I set the aspect ratio for a plot in Python with Spyder?如何使用 Spyder 在 Python 中设置绘图的纵横比?
【发布时间】:2014-10-22 02:43:50
【问题描述】:

我是 Python 的新手,刚从 Matlab 切换过来。发行版是 Anaconda 2.1.0,我正在使用它附带的 Spyder IDE。

我正在尝试在 x 轴和 y 轴上绘制具有相等比率的散点图,以便此代码打印一个正方形图,其中绘制了正六边形的顶点。

import numpy
import cmath
import matplotlib

coeff = [1,0,0,0,0,0,-1]
x = numpy.roots(coeff)

zeroplot = plot(real(x),imag(x), 'ro')
plt.gca(aspect='equal')
plt.show()

但是plt.gca(aspect='equal') 返回一个带有坐标轴的空白图形[0,1,0,1],而plt.show() 什么也不返回。

【问题讨论】:

    标签: python matplotlib plot figure


    【解决方案1】:

    我认为主要问题是plt.gca(aspect='equal') 不只是抓取当前轴并设置其纵横比。从文档中,(help(plt.gca)) 如果当前轴的纵横比不正确,它似乎会创建一个新轴,因此立即解决此问题的方法是将plt.gca(aspect='equal') 替换为:

    ax = plt.gca()
    ax.set_aspect('equal')
    

    我还应该提到,我在运行您的代码时遇到了一些麻烦,因为您使用 pylab 自动加载 numpymatplotlib 函数:我不得不将我的版本更改为:

    import numpy
    import cmath
    from matplotlib import pyplot as plt
    
    coeff = [1,0,0,0,0,0,-1]
    x = numpy.roots(coeff)
    
    zeroplot = plt.plot(numpy.real(x), numpy.imag(x), 'ro')
    ax = plt.gca()
    ax.set_aspect('equal')
    plt.show()
    

    根据我的经验,已经熟悉 Python 的人通常不会使用 Pylab。将来,如果人们没有意识到您正在使用 Pylab 或不熟悉它的工作原理,您可能会发现很难获得帮助。我建议禁用它并尝试习惯通过它们各自的模块访问您需要的功能(例如,使用numpy.real 而不仅仅是real

    【讨论】:

    • 完美!非常感谢。我不习惯通过模块调用函数,但如果它比它好,我想我会习惯的。我一直在避免它,但是现在我已经使用了几天并且对语法更加熟悉了,这不是问题。非常感谢。
    • 是的,我理解 Pylab 存在的原因,以及为什么它似乎对从 MATLAB 迁移过来的人如此有吸引力,但从长远来看,我觉得它是一个净负面因素,因为它使得与它共享代码变得更加困难并向所有不使用它的人寻求帮助。
    猜你喜欢
    • 2012-05-06
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 2011-12-19
    • 2015-05-02
    • 1970-01-01
    • 2020-03-14
    相关资源
    最近更新 更多