0

我正在使用contourcontourfmatplotlib

数据是一个二维数组,其中包含值,如下所示:

1 2 3 3 3
2 3 3 4 1
2 3 4 5 6
...

我得到的结果如下。 在此处输入图像描述

它就像一个正方形,而实际上,y范围是600+,而x范围只有350。所以这个图形应该看起来像一个矩形,而不是一个正方形。

但我查看了 和 中的论点contourcontourf没有关于改变轮廓形状或改变轴长度的论点。

对于 Adob​​e,这是我案例的简化代码:

将 matplotlib.pyplot 导入为 plt

m = [[1,2,3,4],
[2,3,4,5],
[2,2,1,5]]

print m
plt.contourf(m)
plt.show()

那么,在这种情况下,如何使用 ax.axis() 呢?

4

1 回答 1

3

可能您想设置相等的比例:

ax.axis('equal')

编辑

这是您的代码:

#!/usr/bin/python3

from matplotlib import pyplot as plt

m = [[1,2,3,4],
     [2,3,4,5],
     [2,2,1,5]]

fig = plt.figure()
ax = fig.add_subplot(111)

ax.contourf(m)
ax.axis('equal')

fig.savefig("equal.png")

在此处输入图像描述

matplotlib 具有三个接口。这是为利用它们而编写的相同代码:

  1. 机器状态:

    import matplotlib.pyplot as plt
    import numpy as np
    x = np.arange(0, 10, 0.2)
    y = np.sin(x)
    plt.plot(x, y)
    plt.show()
    
  2. pylab:

    from pylab import *
    x = arange(0, 10, 0.2)
    y = sin(x)
    plot(x, y)
    show()
    
  3. 面向对象:

    import matplotlib.pyplot as plt
    import numpy as np
    x = np.arange(0, 10, 0.2)
    y = np.sin(x)
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.plot(x, y)
    plt.show()
    

我更喜欢面向对象的界面:它可以完全控制正在发生的事情。我引用了那个解决方案。

于 2014-08-23T04:28:35.983 回答